Flannel工作原理
flanneld程序启动会有一个参数叫做-etcd-prefix和-iface。前者是指定flanneld程序使用etcd的哪个节点来存储数据,-face是指定flanneld使用网络是使用宿主机哪个物理接口来做隧道然后你需要通过etcdctl命令来设置flannel的网络数据,我这里设置好的配置如下(我这里之索引用证书是因为我的etcd集群配置了证书):


POD01如果要和POD03通信,POD01会把数据包投递给docker01这个(对于POD01来说docker01这个地址是默认网关),docker0根据路由信息查看目的网段172.30.19.0要走flannel.1,于是把数据包直接投递到flannel.1这个VxLAN设备上,但是这个flannel.1知道数据包的目的地址不是自己所以它也会进行转发,不过flannel.1也不知道目的地址172.30.19.2是谁,通常这个时候会在二层网络上会发起ARP请求来获取目的主机的MAC地址,这里其实也会发送ARP请求不过所不同的是它会将这个ARP请求发送给flanneld这个程序(内核引发一个L3 MISS事件),flanneld程序收到L3 MISS内核事件以及arp请求后,并不会向外网发送arp请求,而是从ETCD数据库中查找与目的地址匹配的子网的vtep信息(flanneld程序中指定的)。下图的信息是自动写入的,因为三台主机安装了flanneld程序。接着上面说flanneld会联系etcd查看172.30.19.0网络匹配的节点,

发现172.30.19.0-24符合,那么获取该节点数据,这样就知道这个网段所在主机的物理IP地址和该主机flannel.1这个虚拟设备的MAC地址(这样就找到对端所在主机了)

下图是srv03的地址信息

获得上述信息后flanneld将信息放到本机的arp表中(通过 apr –n可以查看)

然后就可以封装 数据包了但是这个数据包并不能在物理网络上传输因为这是一个vxlan包里面包含源和目的容器的IP以及源和目的的flannel.1的MAC地址以及vxlan标签;然后进行再次封装这次试用的就源主机物理IP和MAC以及目的主机物理IP和MAC。
数据包到达目的地后如何拆包:对端物理IP所在接口收到数据包后拆包发现vxlan标签,于是将拆包后的数据投递给本机的flannel.1,它再次拆包转交给docker0,最后由docker0投递到POD-03上。POD怎么和外界通信呢?这个就和vxlan没关系了,主要是本机的ipvs或者iptables规则来实现转发的。
Flannel工作原理的更多相关文章
- Kubernetes网络之Flannel工作原理
目录 1.Docker网络模式 1.1 bridge网络的构建过程 1.2 外部访问 2.Kubernetes网络模式 2.1 同一个Pod中容器之间的通信 2.2 不同Pod中容器之间的通信 2.3 ...
- Flannel的VXLAN模式工作原理
跨主机通信的一个解决方案是Flannel,由CoreOS推出,最早支持的是UDP模式,但是因为性能太差被淘汰了, 过时的UDP模式 相比两台宿主机直接通信,多出了flanneld的处理过程,发出IP包 ...
- 【k8s】基础概念 + 工作原理
工作原理: 原理图 工作原理描述: 1>用户通过kubectl或者API server的REST API接口,提交需要运行的docker容器(创建pod请求): 2>api server将 ...
- K8s的工作原理
title: Kubernetes之初探 subtitle: K8s的工作原理 date: 2018-09-18 18:26:37 --- K8s概述 我清晰地记得曾经读到过的一篇博文,上面是这样写的 ...
- 菜鸟学Struts2——Struts工作原理
在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...
- 【夯实Nginx基础】Nginx工作原理和优化、漏洞
本文地址 原文地址 本文提纲: 1. Nginx的模块与工作原理 2. Nginx的进程模型 3 . NginxFastCGI运行原理 3.1 什么是 FastCGI ...
- HashMap的工作原理
HashMap的工作原理 HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间 ...
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)
RAC 工作原理和相关组件(三) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...
- ThreadLocal 工作原理、部分源码分析
1.大概去哪里看 ThreadLocal 其根本实现方法,是在Thread里面,有一个ThreadLocal.ThreadLocalMap属性 ThreadLocal.ThreadLocalMap t ...
随机推荐
- VueJs(12)---vue-router(导航守卫,路由元信息)
vue-router(导航守卫,路由元信息) 之前泄露两篇有关vue-router博客: VueJs(10)---vue-router(进阶1) VueJs(11)---vue-router(进阶2) ...
- HTML学习笔记8:表单
什么是表单? 一个网页表单可以将用户输入的数据发送到服务器进行处理.因为互联网用户使用复选框,单选按钮或文本字段填写表格,所以WebForms的形式类似文件或数据库.例如,WebForms ...
- 使用Iterator迭代器循环集合
1.Iterator迭代器用于遍历集合元素,获取迭代器可以使用. 2.Iterator提供了统一遍历集合元素的 方式 ,其提供了用于遍历集合的连个方法----- boolean hasNext()判 ...
- 关于内核转储(core dump)的设置方法
原作者:http://blog.csdn.net/wj_j2ee/article/details/7161586 1. 内核转储作用 (1) 内核转储的最大好处是能够保存问题发生时的状态. (2) 只 ...
- springmvc中只接受固定提交内容类型的请求
springmvc中的@RequestMapping注解是用来处理请求地址映射的,如果某个接口我们只接受请求的提交内容类型(Content-Type)为application/json或text/ht ...
- Render
render 渲染元素 元素是React应用程序的最小构建块 "根"DOM节点,它内部的所有内容都将由React DOM进行管理 仅使用React构建的App程序通常具有单个Dom ...
- Unity文档阅读 第三章 依赖注入与Unity
Introduction 简介In previous chapters, you saw some of the reasons to use dependency injection and lea ...
- Java开发岗面试知识点解析
本文作者参加过多场面试,应聘岗位均为 Java 开发方向.在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几个部分: Java 基础知识点 Java 常见集合 高并发编 ...
- Tar专题
下面的脚本根据当前的系统时间生成压缩文件名,并备份文件到指定目录: DIR=/www/webbackup/web/ FILE_NAME=`date +%y%m%d%H` FILE_NAME=$DIR/ ...
- java的系统时间,怎么计算从现在到凌晨还剩下多少时间?
Apache commons-lang3 long milliSecondsLeftToday = 86400000 - DateUtils.getFragmentInMilliseconds(Cal ...