目录

K8s CNI 网络插件

主流 Kubernetes CNI 插件清单与选型建议

Kubernetes 的网络模型要求每个 Pod 都拥有独立的 IP,并能在不同节点间互通。CNI(Container Network Interface)便是实现这一模型的标准接口,kubelet 在创建 Pod 时会调用配置好的 CNI 插件来完成网卡与 IP 的分配。下面整理了社区常见的 CNI 插件以及性能测评与选型建议。

社区中比较活跃、可生产使用的 CNI 插件主要有以下这些:

  • Antrea:基于 Open vSwitch(OVS)的 CNI,与 VMware vSphere 生态结合紧密。
  • amazon-vpc-cni-k8s:AWS 官方插件,直接复用 VPC 的 ENI 为 Pod 分配 IP,非 Overlay 方案。
  • Calico:纯三层(BGP)方案,支持丰富的 NetworkPolicy,是生产环境最常见的选择之一。
  • Canal:Flannel 负责网络打通、Calico 负责策略的组合方案。
  • Cilium:基于 eBPF 的数据平面,可替代 kube-proxy,可观测性(Hubble)与 L7 策略能力突出。
  • Contiv-VPP:基于 FD.io VPP 的用户态高性能数据平面。
  • Flannel:最简单、最轻量的 Overlay 方案,k3s 等默认使用。
  • Kube-router:使用 IPVS 做 Service Proxy、BGP 做路由,单二进制集成多种网络能力。
  • Kube-OVN:基于 OVN 的 SDN 方案,提供了丰富的 OVN 特性。
  • Weave Net:自带加密的 Mesh Overlay 方案,但上游公司 Weaveworks 已于 2024 年初停止运营,新部署不再推荐。
  • 阿里云 Terway:阿里云 ACK 自研 CNI,基于 ENI 直连 VPC,支持 eBPF 加速与 NetworkPolicy。

此外还有面向多网卡或特殊硬件场景的扩展插件:Multus-CNI(Intel 主导,支持给一个 Pod 挂多块网卡)、CNI-Genie(华为,支持多 CNI 选择)、galaxy(腾讯 TKEStack)、以及 sriov-cni(为 Pod 提供 SR-IOV VF 与 DPDK 能力)。

ITNEXT 网站对不同 CNI 插件做过两份较为公开、被广泛引用的性能测评,分别针对 10Gbit/s 和 40Gbit/s 网络:

根据测评结论,作者给出的选型建议如下:

  • 小规模集群:推荐使用 Kube-router(发展迅速),轻量级、高效,支持广泛的架构(amd64、arm64、riscv64 等);如果追求稳定、省事,可以考虑 Flannel 或 Canal 作为替代方案。
  • 标准集群:Cilium 是首选,其次是 Calico 或 Antrea。Cilium 的优势在于可观测性、易于排查的 CLI、基于 eBPF 的 kube-proxy 替代方案,以及完善的文档。
  • 高性能集群:Calico 或 Calico VPP,在性能与流量加密方面表现突出。

需要说明的是,性能测评结果会随内核版本、CNI 版本、流量模型差异而变化,以上建议应结合自身场景做小规模验证后再落地。

相关内容