1)首先pod1通过自己的以太网设备eth0把数据包发送到关联到root命名空间的veth0上
2)然后数据包被Node1上的网桥设备接受到 , 网桥查找转发表发现找不到pod4的mac地址 , 则会把包转发到默认路由(root命名空间的eth0设备)
3)然后数据包经过eth0就离开了Node1 , 被发送到网络 。
4)数据包到达Node2后 , 首先会被root命名空间的eth0设备
5)然后通过网桥把数据路由到虚拟设备veth1,最终数据表会被流转到与veth1配对的另外一端(pod4的eth0)
每个Node都知道如何把数据包转发到其内部运行的Pod , 当一个数据包到达Node后 , 其内部数据流就和Node内Pod之间的流转类似了
【Kubernetes之POD、容器之间的网络通信】补充说明:对于如何来配置网络 , k8s在网络这块自身并没有实现网络规划的具体逻辑 , 而是制定了一套CNI(Container Network Interface)接口规范 , 开放给社区来实现 。Flannel就是k8s中比较出名的一个 。flannelflannel组建一个大二层扁平网络 , pod的ip分配由flannel统一分配 , 通讯过程也是走flannel的网桥 。
每个node上面都会创建一个flannel0虚拟网卡 , 用于跨node之间通讯 。所以容器直接可以直接使用pod id进行通讯 。
跨节点通讯时 , 发送端数据会从docker0路由到flannel0虚拟网卡 , 接收端数据会从flannel0路由到docker0 。
总结上面老顾介绍了几种网络通信的场景 , 以及他们的通信流程 , k8s的网络通信远远不止这些 , 还有很重要的集群外如何访问集群内部?以及Service访问是用来做什么的?下一篇文章老顾就介绍 , 谢谢!!!
---End---
推荐阅读
- 浅谈安装深度deepin之后使用感受
- 服务器之间实现免密登录的简易教程
- C++高级编程之——函数重载、内联、缺省参数、隐式转换
- 数据存储层HBase进阶之写流程
- 高僧|唐朝一富家公子,酷爱乘船钓鱼,从不去风月之地,后成一代高僧
- 茶席之美静而不争,不可比拟的茶席之美
- 茶叶辨别之嗅香气,香气评语
- 红茶之国是哪一个?[红茶]
- 禅宗与茶道之渊源,日本茶道敬心佛平等
- 茶山谱之南糯,新六大茶山是哪些