cilium相关总结

总结

Cilium 的网络能力可分为 数据传输平面 和 控制平面

  1. 数据传输平面(Data Plane)

    • 如何转发数据包?(如 VXLAN 封装、直接路由)

    • 依赖的底层机制?(如 eBPF、内核路由表)

  2. 控制平面(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:如何选择模式?

  1. 节点是否跨子网?且物理网络不可控?
    → 选 VXLAN(如公有云)。

  2. 节点跨子网,但物理网络支持 BGP/静态路由?
    → 选 Native Routing (BGP) + eBPF Host-Routing(高性能)。

  3. 所有节点在同一子网?
    → 首选 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 技术:渗透在所有层面,提供网络、安全、观测的底层支撑。

部署建议

  1. 同子网 → Native Routing + eBPF Host-Routing(性能最优)。

  2. 跨子网 + 可控网络 → Native Routing (BGP) + eBPF。

  3. 跨子网 + 不可控网络(如云)→ VXLAN + eBPF。
    启用 Hubble 可直观验证流量路径(是否封装、策略是否生效)。