什么是CNI,基于Calico的Pod网络介绍

在k8s集群里,多个节点上的pod相互通信,要通过网络插件来完成,比如calico网络插件。 使用kubeadm初始化k8s集群时,有指定一个参数--pod-network-cidr=10.18.0.0/16 它用来定义pod的网段。 而我们在配置calico的时候,同样也有定义一个calico_ipv4pool_cidr的参数,它的值同样也是pod的网段。 容器网络尤其是在跨主机容器间的网络是非常复杂的。目前主流的容器网络模型主要有docker公司提出的container network model(cnm)模型和coreos公司提出的container network interface(cni)模型,而kubernetes采用了由coreos公司提出的cni模型。
1)cni 首先我们介绍一下什么是 cni,它的全称是 container network interface,即容器网络的 api 接口。 cni本身并不能提供网络服务,它只是定义了对容器网络进行操作和配置的规范。cni仅关注在创建容器时分配网络资源,和在销毁容器时删除网络资源,这使得cni规范非常轻巧、易于实现,得到了广泛的支持。 而真正实现和落地这些规范的是cni插件。常见的cni插件包括calico、flannel、terway、weave net 以及 contiv。
2)k8s如何使用cni插件 k8s 通过cni配置文件来决定使用什么cni插件。基本的使用方法为:
首先在每个节点上配置 cni 配置文件(/etc/cni/net.d/xxnet.conf),其中 xxnet.conf 是某一个网络配置文件的名称;
安装 cni 配置文件中所对应的二进制插件;
在这个节点上创建 pod 之后,kubelet 就会根据 cni 配置文件执行前两步所安装的 cni 插件;
具体的流程如下图所示:
在集群里面创建一个 pod 的时候,首先会通过 apiserver 将 pod 的配置写入。apiserver 的一些管控组件(比如 scheduler)会调度到某个具体的节点上去。 kubelet 监听到这个pod的创建之后,会在本地进行一些创建的操作。当执行到创建网络这一步骤时,它首先会读取刚才我们所说的配置目录中的配置文件,配置文件里面会声明所使用的是哪一个插件,然后去执行具体的cni插件的二进制文件,再由cni插件进入pod的网络空间去配置pod的网络。配置完成之后,kuberlet也就完成了整个pod的创建过程,这个pod就在线了。
3)基于calico的pod网络
说明:
① 每一个node上都会有一个tunl0的虚拟网卡,这个网卡可以理解成网桥,所有pod都要基于此网桥来和其它pod通信。 ② 每生成一个新的pod,那么在node上都会生成一个calixxxx的虚拟网卡,这个网卡会对应到pod里的eth0


电铠产品不惜工本,力求好品质带给用户更好的装机体验
西部数据推出全新磁盘架构,可将HDD的容量提升至50TB
统信桌面操作系统 V20 专业版推送更新:修复内核与桌面环境已知缺陷
差动变压器式加速度传感器原理分析
如何修复转炉耳轴传动侧轴承位磨损问题
什么是CNI,基于Calico的Pod网络介绍
OPPO智慧跨端系统,支持跨平台跨终端万物互联
可穿戴设备大量涌现在健康领域中
与小米MIUI9一同发布:小米首款人工智能音箱面世:8月份开启1元公测
群联技冠群雄 推出全球最快PCIe Gen4 SSD控制芯片E18
288芯光缆交接箱技术参数_288芯光缆交接箱配置
功率限制器的应用及特征介绍
两款微功耗定时器电路图详解
变频器专用接触器的设计方案
坚果 Pro 3 开启 Smartisan OS v8.0 众测:可提供 IMEI 在线申请
我国电源的生产总值平均增长率达到30%
AcrelEMS-HIM高速公路综合能效系统在新晋高速公路快村营至营盘段项目的应用
三星电子开发自己的大语言模型,7月底完成初始版本
EOS为工业3D打印推出一款全新的柔性高分子材料
基于准DPC的LCL型光伏并网逆变器的控制策略