首页/云/Kubernetes 速查/CNI 插件与 Pod 网络模型
网络与服务55 条

CNI 插件与 Pod 网络模型

CNI 负责给 Pod 分配 IP 并打通跨节点通信:Flannel 简单、Calico 走 BGP 且策略能力强、Cilium 基于 eBPF;选型影响性能与可观测性。

Kubernetes 速查云更新于 2026-10-13

CNI 负责什么

容器网络接口插件负责两件事:给每个 Pod 分配地址,并保证这些地址跨节点可达。Kubernetes 本身不实现网络,只约定模型:每个 Pod 有独立地址、Pod 之间不做地址转换直接互通、节点与 Pod 之间也互通。插件选型会直接影响转发性能、策略能力与可观测性。

基本信息

适用平台自建集群需自行安装,托管集群通常提供有限选项
配置目录/etc/cni/net.d
二进制目录/opt/cni/bin
核心职责分配地址、配置路由、执行网络策略
选型依据是否需要策略、是否需要可观测性、对转发开销的容忍度

典型使用场景

  • 自建集群初始化后必须先装插件,否则 Pod 长期停在等待网络状态
  • 需要按命名空间限制东西向流量,必须选支持策略执行的插件
  • 大流量场景关注转发开销,评估覆盖网络与三层直通的差别
  • 排查跨节点不通:先确认插件副本正常、节点路由正确
  • 更换插件前做迁移规划,避免节点进入异常状态

节点与接口检查

节点与接口检查
kubectl get pods -n kube-system -o wide | grep -i cni   # 插件副本是否就绪
ip -br addr | grep -E 'cni|cali|cilium|flannel'          # 节点上的网络接口
ip route | head -20                                      # 跨节点路由是否写入
kubectl run net-test --rm -it --image=busybox -- ping -c2 10.244.1.3   # 跨节点连通性

常见插件对比

插件数据面特点备注
Flannel覆盖网络,配置简单默认不含策略执行能力
Calico三层路由或覆盖网络策略与网络诊断工具较完整
Cilium基于内核可编程数据面可观测与七层策略能力丰富
云厂商插件与云上私有网络集成地址直接从子网分配
网络策略是否真正生效,取决于插件有没有实现执行逻辑。插件不支持时,策略对象能创建成功却不会限制任何流量。
自建集群更换插件需要清理旧配置与节点上的路由残留,操作不当会让节点进入不可用状态。务必先在测试环境完整演练。

易错点

  • 装完插件不验证跨节点通信:集群看起来正常,跨节点的服务调用却偶发失败
  • 覆盖网络的最大传输单元设置过大:小包正常大包丢弃,表现为大文件传输或长连接异常
  • 更换插件不清理旧配置与路由:残留规则与新插件冲突,节点状态异常
  • 以为网络策略写了就生效:插件不支持执行时规则形同虚设,流量不受任何限制

数据来源与参考

  • Kubernetes 官方文档 · Cluster Networking / CNI
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌