您当前所在位置:首页攻略深度解析Kubernetes网络插件flannel和calico中的cni0和docker0

深度解析Kubernetes网络插件flannel和calico中的cni0和docker0

更新:2024-07-01 08:49:29编辑:游戏资讯归类:攻略

最近我在复习k8s网络方面的知识,并查看了之前整理的笔记、文档以及过往总结的博客后发现一个问题。在有关flannel和calico这两个k8s网络插件的文章和博客中,经常会提到cni0和docker0这两个网桥设备,但是却没有明确说明它们之间的关系。有的甚至混淆了两者的概念。这也是我之前学习时忽略掉的问题。这次发现后,我进行了大量资料的查阅和认真思考,对两者有了如下的总结和浅析。


flannel网络下的cni0和docker0

在Kubernetes的flannel网络下,并不使用docker0作为网桥,而是通过一个CNI接口来替代docker0,它在宿主机上的默认名字叫cni0。

以Flannel的vxlan模式为例,其在Kubernetes中的工作流程不变,只是其中的docker0网桥替换为cni0网桥了。具体流程如下:

在命令行中通过route -n可以看出cni0和docker0并不是一个设备:

通过brcte show命令也可以查看该node节点下的网桥设备有哪些,对应的虚拟网卡都有哪些:

需要注意的是,CNI 网桥只是接管所有 CNI 插件负责的、即 Kubernetes 创建的容器(Pod)。而此时,如果你用 docker run 单独启动一个容器,那么 Docker 项目还是会把这个容器连接到 docker0 网桥上。所以这个容器的 IP 地址,一定是属于 docker0 网桥的 172.17.0.0/16 网段。


calico网络下的cni0和docker0

而在k8s的calico网络下并没有使用cni网桥模式,因此无论是IPIP模式还是BGP模式都查不到对应的cni0网桥,只有docker0网桥设备。

在IPIP模式下查看路由配置:

在BGP模式下查看路由配置:

由此可见,cni0和docker0都属于网桥设备,但完全不是一回事。一个是基于docker的网桥设备,一个是基于k8s所创建的网桥设备。希望该篇文章能够在k8s网络的学习当中帮助到大家,如需转载请标明出处,谢谢。

以上就是电脑114游戏给大家带来的关于深度解析Kubernetes网络插件flannel和calico中的cni0和docker0全部内容,更多攻略请关注电脑114游戏。

电脑114游戏-好玩游戏攻略集合版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

植物大战僵尸杂交版 正版下载官方版 千万别忽视基础!十张图带你一步步理解Java内存结构!