type
status
date
slug
summary
category
tags
create_time
Aug 27, 2025 08:22 AM
icon
password
my_create_time
📝 前言
在 Kubernetes 集群中,网络是实现 Pod、Service、Node 等组件之间通信的核心基础设施。
为了保证不同容器运行环境和不同网络方案的可插拔性,CNI(Container Network Interface)标准被提出。
CNI 插件是 Kubernetes 集群不可或缺的组件之一,没有它 Pod 之间将无法建立正常的网络连接。
Calico 是目前生产环境中最常用的 CNI 插件,以其高性能、可扩展和丰富的网络策略能力,成为云原生网络的首选方案。
本文将对 Calico 的背景、架构和工作原理进行介绍,并结合生产环境给出优化建议。
🧠 本章知识卡片

🚀 本章小节
1️⃣ 什么是 CNI(Calico)?
CNI 是 CNCF 推出的容器网络接口标准,定义了容器运行时如何调用网络插件来完成容器的网络配置。
Calico 是一个基于 BGP(边界网关协议) 的容器网络解决方案,主要提供以下功能:
- Pod 网络互通:为 Pod 分配可路由的 IP 地址。
- 网络策略:支持细粒度的安全策略控制(类似防火墙规则)。
- 跨集群通信:通过 BGP 或 VXLAN 进行高效的路由传播。
- 与云原生生态集成:兼容 Kubernetes、OpenShift、Docker 等平台。
与 Flannel、Weave 等 CNI 相比,Calico 更加注重高性能和安全策略能力,特别适合大规模生产环境。
2️⃣ Calico 架构
Calico 的架构主要由以下组件构成:
- Felix:核心代理,负责在节点上管理路由规则和安全策略。
- etcd / Kubernetes API:存储网络策略、IP 分配信息等。
- BIRD(BGP Daemon):实现 BGP 路由传播,使得各节点能够通过三层网络直接通信。
- calicoctl:命令行工具,用于管理和调试 Calico 配置。
完整架构图如下:

3️⃣ 支持的工作模式
Calico 提供几种主要的数据平面工作模式,每种模式各有侧重点:
- 标准 Linux(iptables)模式
基于 iptables 和 kube-proxy,兼容性强,但受限于 Linux 网络栈效率。
- 三层 BGP 模式
Pod 之间通过 BGP 路由直接通信,无需隧道,性能优秀,依赖底层网络对 BGP 的支持。
- VXLAN/IPIP 隧道模式
适用于底层网络无法改造的场景,通过封装跨节点通信,兼容性较强。
- 最新 eBPF 模式
Calico 支持使用 eBPF(extended Berkeley Packet Filter) 作为数据平面的替代方案Calico 文档。
eBPF 是一种运行在 Linux 内核中的轻量沙箱虚拟机,允许运行安全的小程序,无需修改内核源代码。
4️⃣ 工作原理
Calico 的工作流程大致如下:
- Pod 创建
kubelet 调用 CNI 插件,Calico 为新建 Pod 分配一个 IP 地址。
- 网络路由配置
Felix 在节点上安装路由和 iptables 规则,确保流量能正确转发到对应 Pod。
- BGP 路由传播
BIRD 或 GoBGP 将路由信息通告给其他节点,从而实现跨节点通信。
如果底层网络不支持 BGP,可以启用 IPIP/VXLAN 封装。
- 网络策略应用
当用户在 Kubernetes 中定义
NetworkPolicy
,Calico 将其转换为 iptables 规则,实现流量控制。5️⃣ 工作流程时序图

6️⃣ 生产环境优化建议
在生产环境中,Calico 的性能和稳定性至关重要,以下是常见优化方案:
场景 | 优化措施 |
大规模集群(>500 节点) | 使用 BGP Peering(Route Reflector)减少路由泛洪 |
云环境部署 | 建议使用 VXLAN 模式,避免依赖底层网络 |
高并发策略 | 启用 eBPF 提升性能 |
容器安全需求 | 使用 Calico NetworkPolicy 进行细粒度隔离 |
可观测性 | 启用 Calico metrics,结合 Prometheus + Grafana 做监控 |
✅ 总结
Calico 是 Kubernetes 集群中最主流的 CNI 插件之一,凭借高性能路由、灵活的安全策略和可扩展性,广泛应用于公有云、私有云和混合云环境。
在生产环境中,合理选择工作模式(BGP / VXLAN)并优化路由策略,能显著提升网络性能与稳定性。
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
- 作者:青萍叙事
- 链接:https://blog.lusyoe.com/article/calico-intro
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。