CNI 不是装完就完事:Calico、Cilium、Weave,选错一个,集群网络天天加班

举报
Echo_Wish 发表于 2026/02/07 20:26:37 2026/02/07
【摘要】 CNI 不是装完就完事:Calico、Cilium、Weave,选错一个,集群网络天天加班

CNI 不是装完就完事:Calico、Cilium、Weave,选错一个,集群网络天天加班


引子:

说个真实到扎心的场景。

K8s 集群搭好了,业务也跑起来了,某天产品经理一句话:

“我们想加点网络隔离,不同服务之间最好能细一点。”

你回头一看集群:

  • CNI:随手装的
  • NetworkPolicy:写了但不生效
  • 网络延迟:偶尔抖
  • 排障难度:地狱级

这时候你才意识到一件事:

CNI 插件的选型,决定了你未来一年网络相关工单的数量。

今天我们就不讲“官方对比表”,不背参数,我只聊一件事:

CNI 插件到底是如何影响网络策略能力和真实性能的?

重点聊三位“老熟人”:

  • Calico
  • Cilium
  • Weave

一、先把底层逻辑说清楚:CNI 到底在管什么?

很多人对 CNI 的理解还停留在:

“哦,就是让 Pod 能联网。”

说实话,这理解只对了 30%。

一个成熟 CNI 插件,至少影响三件大事:

  1. 数据怎么走?(路由 / Overlay / eBPF)
  2. 策略谁来管?(NetworkPolicy 是否真生效)
  3. 包走得快不快?(延迟、吞吐、CPU 消耗)

你选的不是“插件”,
你选的是 网络实现模型 + 安全模型 + 运维复杂度


二、Calico:运维界的“老实人”,稳,但不浪

先说 Calico,一句话总结:

Calico 是最像“正经网络工程”的 CNI。

1️⃣ 网络模型:简单、直给

Calico 默认走的是 三层路由(BGP / IP-in-IP / VXLAN),核心思想一句话:

能不用 Overlay,就不用。

优点非常明显:

  • 路径清晰
  • 延迟低
  • 排障像在排传统网络

很多运维喜欢 Calico,不是因为它多牛,而是:

tcpdump 一抓,就知道包去哪了。

2️⃣ 网络策略:K8s 原生友好

Calico 对 NetworkPolicy 的支持,属于教科书级别

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-api
spec:
  podSelector:
    matchLabels:
      app: backend
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: api

👉 生效明确、行为可预测。

但问题也在这:

  • 只能到 L3/L4
  • 想搞 L7?基本没戏

3️⃣ 性能与代价

  • 性能:
  • CPU 消耗:可控
  • 高级能力:有限

📌 我的真实感受
Calico 很少“惊艳”,但也很少“翻车”。


三、Cilium:性能怪兽,但你得配得上它

如果 Calico 是老实人,那 Cilium 就是卷王

一句话评价:

Cilium 把网络这件事,直接塞进了内核。

1️⃣ eBPF:这是分水岭

Cilium 最大的不同点:

不用 iptables,用 eBPF。

这意味着什么?

  • 包在内核态就被处理
  • 不需要一堆规则链
  • 性能随规模增长更稳定

2️⃣ 网络策略:从“能用”到“能说清楚”

Cilium 的 NetworkPolicy,可以直接写到 L7:

apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
spec:
  endpointSelector:
    matchLabels:
      app: backend
  ingress:
  - fromEndpoints:
    - matchLabels:
        app: api
    toPorts:
    - ports:
      - port: "80"
        protocol: TCP
      rules:
        http:
        - method: "GET"
          path: "/health"

你注意到了吗?

👉 方法、路径,全都能控。

这在微服务里,杀伤力非常大。

3️⃣ 性能真的好吗?

实话说一句:

  • 大规模集群
  • 高频东西向流量
  • Service Mesh 前置或替代

👉 Cilium 确实猛。

但代价也很真实:

  • 学习成本高
  • 内核版本有要求
  • 排障要懂 eBPF

📌 我踩过的坑
Cilium 不适合“照着文档装完就跑”的团队,
它更适合 有内核、网络、平台能力的团队


四、Weave:简单是真简单,但时代变了

Weave 现在出镜率已经不高了,但不少老集群还在用。

一句话总结:

Weave 是“让你快点跑起来”的 CNI。

1️⃣ 网络模型:纯 Overlay

  • VXLAN
  • 自动建网
  • 零配置起步

适合什么?

测试环境 / Demo / 小集群

2️⃣ 网络策略:存在感不强

Weave 对 NetworkPolicy 的支持,说实话:

  • 能用
  • 但不优雅
  • 大规模下不太稳

3️⃣ 性能与现实

Overlay + 用户态处理,意味着:

  • 延迟更高
  • CPU 消耗更明显
  • 排障路径更长

📌 我的态度很明确
如果你现在还在纠结 Weave,
那你更该考虑“要不要换 CNI”本身。


五、真正影响你选型的,其实是这三个问题

别看厂商对比表,看这三个问题就够了。

问题一:你要的“网络策略”,到底有多细?

  • 只要 Pod 级隔离 👉 Calico
  • 要到 API / URL 👉 Cilium
  • 只是跑起来 👉 Weave

问题二:你更怕哪种“痛”?

  • 怕排障难 👉 Calico
  • 怕性能瓶颈 👉 Cilium
  • 怕配置复杂 👉 Weave(但后期会更痛)

问题三:你的团队,扛得住复杂度吗?

Cilium 的上限很高,但下限也很高。


六、我的个人选型建议(掏心窝版)

不是标准答案,是“干过活”的答案:

  • 中小规模集群 / 运维主导
    👉 Calico

  • 微服务重、流量大、安全细、平台化强
    👉 Cilium

  • 临时环境 / 教学 / 快速验证
    👉 Weave(但别长期)

最怕的一种情况是:

业务复杂 + 团队薄弱 + 选了最复杂的 CNI

那不是架构升级,是主动加班。


结尾:

我想留你一句我自己踩坑后才明白的话:

CNI 插件不是“装完就不动”的基础设施,而是长期陪你打仗的网络底盘。

你今天为了省事随便选的那一个,
很可能就是明年凌晨三点你还在排查丢包的原因。

选 CNI,
不是选功能,
是选 未来你熬夜的方式

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。