k8s随笔-容器网络小结

栏目: 编程工具 · 发布时间: 7年前

内容简介:看了一些容器网络的资料后,写一下现阶段理解。以flannel vxlan为例,POD发给其他node上POD的包,首先会根据POD内路由表走默认网关从eth0网卡发往docker0网桥,docker0相当于路由器,收到包后查找宿主机路由表,发现目标IP属于其他node上的flannel网段,规则指定了直接从flannel网卡送出到局域网即可送达,但实际上这个二层联通的容器网络根本不存在。所以此刻flannel虚拟网卡会对要发出的包进行vxlan封包为真实IP,再次查找宿主机路由表,如果目标node是同网段的

看了一些容器网络的资料后,写一下现阶段理解。

overlay

以flannel vxlan为例,POD发给其他node上POD的包,首先会根据POD内路由表走默认网关从eth0网卡发往 docker 0网桥,docker0相当于路由器,收到包后查找宿主机路由表,发现目标IP属于其他node上的flannel网段,规则指定了直接从flannel网卡送出到局域网即可送达,但实际上这个二层联通的容器网络根本不存在。所以此刻flannel虚拟网卡会对要发出的包进行vxlan封包为真实IP,再次查找宿主机路由表,如果目标node是同网段的,则直接发往目标mac地址,否则走默认网关发往路由器进一步转发,这就是隧道的发送端原理了,即overlay。

接收端物理网卡收到vxlan后,内核会进行解包,并根据封包内的信息将包交给flannel网卡,进一步通过docker0二层交换数据包到POD内。

总的来说,overlay是通过构造虚拟的二层网络,实际上完成了基于三层的数据通信。

参考链接: https://tonybai.com/2017/01/17/understanding-flannel-network-for-kubernetes/

underlay

以calico bgp为例,POD给其他node上POD发包,首先还是根据POD内路由走默认网关从eth0送到docker0网桥,然后docker0相当于路由器,会查宿主机路由表,会发现目标IP属于其他node上的calico网段,路由规则指定需要经过网关转发,而网关就是目标node的IP,此时目标IP是容器虚IP,而网关IP是物理存在的对端node IP,因此经过二层ARP获取mac后直接发往了网关即可,也就是对端node会收到包。

对端node物理网卡收到包后,会发现包的目标IP不是自己,那么此时该node充当路由器角色,查找自己的路由表,发现目标IP可以直接送给容器的虚拟网卡,也就相当于容器和路由器直连着,直接就完成了送达容器的任务。

这里我有一个疑惑,为什么calico在本机直接配置的是到POD网卡的直接路由,而不是配一个到docker0的网关路由规则,再由docker0做二层转发到POD呢?

参考链接: https://segmentfault.com/a/1190000016565044

博主无私的分享着知识,你愿意送他一顿热腾腾的早餐吗?

k8s随笔-容器网络小结

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

锋利的jQuery

锋利的jQuery

单东林、张晓菲、魏然 / 人民邮电出版社 / 2009-6 / 39.00元

《锋利的jQuery》循序渐进地对jQuery的各种函数和方法调用进行了介绍,读者可以系统地掌握jQuery的DOM操作、事件监听和动画、表单操作、AJAX以及插件方面等知识点,并结合每个章节后面的案例演示进行练习,达到掌握核心知识点的目的。为使读者更好地进行开发实践,《锋利的jQuery》的最后一章将前7章讲解的知识点和效果进行了整合,打造出一个非常有个性的网站,并从案例研究、网站材料、网站结构......一起来看看 《锋利的jQuery》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具