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工作原理的更多相关文章

  1. Kubernetes网络之Flannel工作原理

    目录 1.Docker网络模式 1.1 bridge网络的构建过程 1.2 外部访问 2.Kubernetes网络模式 2.1 同一个Pod中容器之间的通信 2.2 不同Pod中容器之间的通信 2.3 ...

  2. Flannel的VXLAN模式工作原理

    跨主机通信的一个解决方案是Flannel,由CoreOS推出,最早支持的是UDP模式,但是因为性能太差被淘汰了, 过时的UDP模式 相比两台宿主机直接通信,多出了flanneld的处理过程,发出IP包 ...

  3. 【k8s】基础概念 + 工作原理

    工作原理: 原理图 工作原理描述: 1>用户通过kubectl或者API server的REST API接口,提交需要运行的docker容器(创建pod请求): 2>api server将 ...

  4. K8s的工作原理

    title: Kubernetes之初探 subtitle: K8s的工作原理 date: 2018-09-18 18:26:37 --- K8s概述 我清晰地记得曾经读到过的一篇博文,上面是这样写的 ...

  5. 菜鸟学Struts2——Struts工作原理

    在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...

  6. 【夯实Nginx基础】Nginx工作原理和优化、漏洞

    本文地址 原文地址 本文提纲: 1.  Nginx的模块与工作原理    2.  Nginx的进程模型    3 . NginxFastCGI运行原理        3.1 什么是 FastCGI   ...

  7. HashMap的工作原理

    HashMap的工作原理   HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间 ...

  8. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)

    RAC 工作原理和相关组件(三) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...

  9. ThreadLocal 工作原理、部分源码分析

    1.大概去哪里看 ThreadLocal 其根本实现方法,是在Thread里面,有一个ThreadLocal.ThreadLocalMap属性 ThreadLocal.ThreadLocalMap t ...

随机推荐

  1. Myeclipse使用git

    推荐使用服务器:coding,coding的上传很稳定很快 怎么建仓库: coding 这个服务器呢有个很明显的东西就是太的语言可以是中文的, 点头标签的加号就能进行创建仓库了 点击新建就行了 点击这 ...

  2. 解决150%DPI下Photoshop不能显示成合适大小的问题

    Adobe官方这里一直不给力,只能靠自己动手了. 和解决CHM高分屏显示的步骤差不多: Ctril+R,输入regedit编辑注册表. 进入到 HKEY_LOCAL_MACHINE > SOFT ...

  3. asp.net路径问题

    -------------初级篇---------------------------------------- 在一般的href中路径的引用问题   ./index.aspx与index.aspx都 ...

  4. wordpress上下篇

    分页一: <!--上下篇开始--> <div class="shangxia"> <?php $current_category=get_the_ca ...

  5. juniper srx 配置

    天涯海角- juniper为人所熟悉的一定是从netscreen开始的,作为一线防火墙品牌,还是有很高的地位.但是以前玩netscreen,都是用的网页版去配置,而且网页版做得很不错.但是现在nets ...

  6. Springboot 框架学习

    Springboot 框架学习 前言 Spring Boot是Spring 官方的顶级项目之一,她的其他小伙伴还有Spring Cloud.Spring Framework.Spring Data等等 ...

  7. springcloud(十):服务网关zuul(转)

    前面的文章我们介绍了,Eureka用于服务的注册于发现,Feign支持服务的调用以及均衡负载,Hystrix处理服务的熔断防止故障扩散,Spring Cloud Config服务集群配置中心,似乎一个 ...

  8. SIMATIC_STEP_V5.6使用报错

    SIMATIC_STEP_V5.6是西门子出来的一款能够在Windows 10上运行的step 7软件. 正常的安装步骤我们可以在百度上面进行一些查找,在这里我将我遇到的一个问题发出来. 在Windo ...

  9. 你不知道的JavaScript--Item15 prototype原型和原型链详解

    用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...

  10. 你不知道的JavaScript--Item4 基本类型和基本包装类型(引用类型)

    1.基本类型和引用类型 基本的数据类型有5个:undefined,boolean,number,string,null typeof null; //"object" typeof ...