Skip to content

对比

CNI 主流方案对比

维度 Flannel Calico Cilium
维护方 Flannel-io(社区) Tigera(公司) Isovalent / Cisco
CNCF sandbox Graduated Graduated
数据面 vxlan / host-gw / ipip / udp iptables / eBPF / IPIP / VXLAN / BGP eBPF(XDP / TC / sock_ops)
NetworkPolicy ❌(雏形) K8s 事实标准 ✅ K8s + Cilium 扩展(L7)
替换 kube-proxy ✅(eBPF data plane)
性能 高(eBPF)/ 中(iptables) 最高
可观测 Hubble(service map + flow + L7)
L7 策略 ✅(Enterprise) ✅(原生)
BGP 物理网络 ✅(生产推荐)
双栈 IPv4/IPv6 部分
内核要求 3.10+ 3.10+ 4.19+,建议 5.10+
资源占用 极低 中(BPF maps 占用内存)
商业版 Tigera Enterprise Isovalent Enterprise
学习曲线 中(BGP 陡) 陡(eBPF)
适用集群规模 <500 <5000 <10000

一句话定位

  • Flannel:最简、零策略、学习 / 开发用
  • Calico:生产最稳、NetworkPolicy 完整、配合 BGP 可对接物理网络
  • Cilium:性能 / 可观测 / 服务网格一体化,新集群首选

决策树

要 NetworkPolicy?
  ├─ 不要 → Flannel(最简单)
  └─ 要
       ├─ 集群 <100 节点,不需要 L7 policy → Calico(iptables,稳)
       ├─ 大集群 / BGP 网络 / 物理设备要学 Pod 路由 → Calico + BGP
       ├─ 性能 / 可观测 / L7 policy / 服务网格 → Cilium
       └─ 内核老(<4.19) → Calico iptables(别勉强 Cilium)

性能数字参考

  • iptables 模式:service 规则 ~5k 时延迟显著上升
  • Calico eBPF:service 规则 ~20k 内延迟平稳
  • Cilium:service 规则 ~50k 内延迟平稳
  • 跨节点 Pod-to-Pod:
  • host-gw / native-routing:~30–50μs(无封装)
  • VXLAN:~60–100μs(50 字节开销)
  • IPIP:~50–80μs

兼容 / 迁移注意

  • Flannel → Calico:共存可(calico policy-only 模式),但要重排 Pod CIDR
  • Calico → Cilium:calico 不卸载也能共存一段时间,但生产建议一次性切换
  • CNI 切换一定记得:所有 Pod 重启,service IP 不变但 Pod IP 会变
  • Multus:常用于多网卡,Cilium / Calico 都是常见主 CNI

监控 / 排障通用

# 看当前 CNI
ls /etc/cni/net.d/

# 看 CNI binary
ls /opt/cni/bin/

# 看 Pod 路由
ip route show table all

# 看 iptables(如果是 iptables 模式)
iptables-save | head

一句话选型

生产不知道选啥 → Calico;新集群能升内核 + 想要最强 → Cilium;学习 / dev → Flannel