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 ...
随机推荐
- [CVPR 2016] Weakly Supervised Deep Detection Networks论文笔记
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #323333 } p. ...
- Spring对象生存周期(Scope)的分析
一.Scope定义 Scope用来声明容器中管理的对象所应该处的限定场景或者说对象的存活时间,即容器在对象进入相应的Scope之前,生产并装配这些对象,在该对象不再处于这些Scope之后,容器通常会销 ...
- ORC文字识别软件破解版
下载地址:http://pan.baidu.com/s/1bnCiXdl 点击 然后可以免费用了ABBYY了!!
- mybatis自定义代码生成器(Generator)——自动生成model&dao代码
花了两天的时间研究了下mybatis的generator大体了解了其生成原理以及实现过程.感觉generator做的非常不错,给开发者也留足了空间.看完之后在generator的基础上实现了自定义的生 ...
- mysql数据库的安装与配置
mysql数据库的安装与配置及workbench的简单使用 mysql数据库社区版下载:https://dev.mysql.com/downloads/installer/ 我这里选的是社区安装版(适 ...
- 究竟谁在绑架中国的4G政策?
2009年中国正式发放3G牌照以来,尽管在开始阶段受到了应用不足的困扰,但是随着智 能手机的迅速推广,3G移动通信也开始在中国得到了飞速的发展.就在消费者以及市场 逐步接受并广泛应用该技术之际,4G通 ...
- 使用STM32Cube在STM32F7开发板上实现SD+Freertos+Fatfs
简介 最近项目中可能需要使用到SD卡,所以需要对SD卡的配置和使用调研,在配置过程中遇到了一些问题,在此记录一下. STM32Cube配置 Pinout 只需要注意绿色部分的设定 Clock配置 这里 ...
- python已安装了一个包,但是导入包中的模块时报错没有这个包
执行import sys; print(sys.path)查看python搜索路径,确保自己的模块在python搜索路径中 python的搜索路径与包(package) python的搜索路径其实是一 ...
- 【译】Flink + Kafka 0.11端到端精确一次处理语义的实现
本文是翻译作品,作者是Piotr Nowojski和Michael Winters.前者是该方案的实现者. 原文地址是https://data-artisans.com/blog/end-to-end ...
- Java中存取权限和修饰符public、private、protected和default的区别和联系
java中有4种存取权限和对应的修饰符(从限制最少的开始列出),主要作用如下: 1.public权限最大,代表任何程序代码都可以存取的公开事物(类.变量.方法.构造函数等).它往往用于对外的情况,也就 ...