cilium相关总结
- cilium
- 2025-07-25
- 46热度
- 0评论
总结
Cilium 的网络能力可分为 数据传输平面 和 控制平面:
-
数据传输平面(Data Plane):
-
如何转发数据包?(如 VXLAN 封装、直接路由)
-
依赖的底层机制?(如 eBPF、内核路由表)
-
-
控制平面(Control Plane):
-
如何管理网络状态?(如服务发现、策略下发)
-
依赖的协议?(如 KVStore、Kubernetes API)
-
以下模式主要属于 数据传输平面 的实现差异。
1. VXLAN 模式(Overlay 网络)
-
工作原理:
创建 overlay 网络,将 Pod 的原始数据包封装在 UDP 包(VXLAN 头) 中。-
外层头:源/目标节点的物理 IP + MAC 地址。
-
内层头:源/目标 Pod 的 IP + MAC 地址。
-
-
关键特点:
-
跨子网支持:节点可在不同三层网络(只要 IP 可达)。
-
隔离性:Pod 网络与底层物理网络解耦(独立 CIDR)。
-
性能开销:封装/解封装消耗约 10-20% 的带宽。
-
-
适用场景:
节点跨子网部署、云环境(如 AWS/Azure)、无法直接路由 Pod IP 的网络。
2. Native Routing 直接路由(Underlay 网络)
-
核心思想:不封装 Pod 流量,直接利用物理网络路由 Pod IP。
-
工作原理:
-
Cilium 通过 BGP 或手动配置,将每个节点的
PodCIDR
宣告到物理网络。 -
物理路由器/交换机学习到
PodCIDR
路由,指向对应节点的物理 IP。 -
节点间通信时,数据包以 原始 Pod IP 的形式被物理网络路由。
-
-
关键特点:
-
零封装开销:性能接近主机网络(与 Calico BGP 类似)。
-
依赖底层网络:需确保物理网络能路由 Pod IP(如配置 BGP 或静态路由)。
-
-
子模式:
-
BGP 模式:Cilium 作为 BGP Speaker,动态向物理路由器宣告路由(类似 Calico)。
-
手动静态路由:管理员手动在路由器上添加 PodCIDR 路由。
-
-
适用场景:
数据中心可控网络(支持 BGP 或静态路由)、高性能需求场景。
3. eBPF Host-Routing(eBPF 主机路由)
-
本质:是 Native Routing 的加速实现,非独立模式。
-
工作原理:
-
利用 eBPF 程序替代内核传统路由栈(
iptables
+路由表
)。 -
在数据包进入网卡后直接由 eBPF 处理,决定下一跳(Pod 或网关)。
-
-
关键特点:
-
超高性能:绕过内核协议栈,减少上下文切换(提升 30%+ 吞吐)。
-
依赖 eBPF:需较新内核(≥ 4.19)并启用 eBPF 支持。
-
无缝兼容:可与 VXLAN 或 Native Routing 结合(eBPF 替代内核路由逻辑)。
-
-
适用场景:
高吞吐/低延迟敏感型应用(如金融交易、AI 训练)。
4. 模式对比总结
模式 | 传输方式 | 跨子网支持 | 性能 | 依赖条件 | 典型场景 |
---|---|---|---|---|---|
VXLAN | 封装(Overlay) | 支持 | 中等 | 节点 IP 可达 | 公有云、混合云 |
Native Routing | 直接路由 | 注意:有条件支持 | 高 | 物理网络支持 Pod IP 路由 | 私有数据中心(BGP/静态路由) |
eBPF Host-Routing | 直接路由 + eBPF | 注意:依赖 Native-Routing 的底层能力 | 极高 | 内核 ≥ 4.19,启用 eBPF | 性能敏感型业务 |
Native Routing / eBPF Host-Routing 在跨子网时需物理网络配合(如 BGP)。
关键问题解答
Q1:eBPF 是一种独立的网络模式吗?
不是。eBPF 是 Cilium 的基础技术栈,用于加速和增强所有模式:
-
在
VXLAN
中:eBPF 替代iptables
处理 Service 负载均衡。 -
在
Native Routing
中:eBPF Host-Routing 提供超高速数据转发。 -
无论何种模式,eBPF 均负责 安全策略(NetworkPolicy) 的高效执行。
Q2:如何选择模式?
-
节点是否跨子网?且物理网络不可控?
→ 选 VXLAN(如公有云)。 -
节点跨子网,但物理网络支持 BGP/静态路由?
→ 选 Native Routing (BGP) + eBPF Host-Routing(高性能)。 -
所有节点在同一子网?
→ 首选 Native Routing + eBPF Host-Routing(极致性能)。
Q3:Cilium 默认使用什么模式?
-
若未配置,Cilium 自动检测:
-
节点同子网 → 启用 Native Routing。
-
节点跨子网 → 回退到 VXLAN。
-
-
可通过参数显式指定:
tunnel: vxlan # 强制 VXLAN tunnel: disabled # 强制 Native Routing
eBPF 的全局价值
即使不关注网络模式,eBPF 也为 Cilium 带来革命性能力:
领域 | 传统方式 | Cilium (eBPF) |
---|---|---|
负载均衡 | kube-proxy + iptables | eBPF 直接处理 Service (DSR) |
网络策略 | iptables 规则链 | eBPF 程序动态注入策略 |
可观测性 | 有限采样(如 tcpdump) | 全链路追踪 + 指标(Hubble) |
安全审计 | 系统日志 | 实时进程/网络行为监控 |
总结
-
VXLAN:通用跨子网方案,牺牲性能换隔离性。
-
Native Routing:高性能方案,依赖物理网络支持 Pod 路由。
-
eBPF Host-Routing:非独立模式,是 Native Routing 的 性能加速器。
-
eBPF 技术:渗透在所有层面,提供网络、安全、观测的底层支撑。
部署建议:
同子网 → Native Routing + eBPF Host-Routing(性能最优)。
跨子网 + 可控网络 → Native Routing (BGP) + eBPF。
跨子网 + 不可控网络(如云)→ VXLAN + eBPF。
启用 Hubble 可直观验证流量路径(是否封装、策略是否生效)。