加载中...

CNI(Container Network Interface,容器网络接口)是 CNCF 托管的一套规范与配套库,定义了容器运行时与网络插件之间的约定:容器创建时如何为其分配网络,销毁时如何清理。它最初由 CoreOS 发起。
CNI 插件是一个可执行文件,运行时在创建 Pod 沙箱后调用它,通过环境变量与标准输入传入操作类型(ADD/DEL/CHECK)、容器网络命名空间路径和 JSON 配置;插件负责创建 veth 设备、分配 IP、配置路由,并把结果以 JSON 返回。多个插件可以链式调用,例如主插件负责连通、附加插件负责带宽限制或端口映射。
社区维护了 bridge、host-local、portmap 等基础插件;生产环境常用的第三方实现包括 Flannel(简单覆盖网络)、Calico(路由与网络策略)、Cilium(基于 eBPF)以及各云厂商的 VPC 原生插件。
CNI 把“容器如何联网”从编排系统中剥离出来,Kubernetes、CRI-O、containerd 等都遵循该规范,用户可按需求自由更换网络方案而不改动上层平台。

登录 后参与讨论
暂无讨论,来发表第一条评论吧