系列导航
本系列从 Pod 网络连通入手,逐步展开到 K8s 网络全景。
① 概念 → ② Flannel → ③ Calico → ④ 流量路径 → ⑤ Cilium → ⑥ 对比 → ⑦ 排障 ‖ ⑧ 开发 → ⑨ 多网卡 → ⑩ AI 演进
| 顺序 | 文章 | 定位 |
|---|---|---|
| ① | 概念与入门 | 基础——主机网络、Docker 网络、CNI 标准、方案分类树 |
| ② | Flannel 详解 | CNI 实现——Overlay 封装(UDP/VXLAN/HostGW)与抓包 |
| ③ | Calico 详解 | CNI 实现——三层路由(BGP/IPIP)+ NetworkPolicy |
| ④ | 流量路径全解析 | 全貌——Pod/Service/Ingress/Egress,揭示 CNI 的边界 |
| ⑤ | Cilium 详解 | 超越 CNI——eBPF 统一 Pod + Service + L7 + Hubble |
| ⑥ | 插件对比与选型 | 选型——5 插件横向对比 + 决策树 |
| ⑦ | 排障思路与常用命令 | 运维——工具链 + 场景排查 + 性能 |
| — | 核心路径 ↑ | 扩展展望 ↓ |
| ⑧ | CNI 插件开发指南 | 扩展——基于 CNI 规范开发自定义插件 |
| ⑨ | 多网卡方案详解 | 进阶——Multus + SR-IOV/ipvlan 多网口实战 |
| ⑩ | 本篇 - AI 时代网络演进 | 展望——GPU 网络、eBPF 加速、未来方向 |
重要
GPU 分布式训练需求的爆发,推动 CNI 领域从"Pod 互通"向"微秒级延迟、百GB吞吐"演进。以下按变化方向、技术方案、适用场景整理。
1. GPU 直通网络(RDMA / RoCE)
分布式训练的开销不在计算,在 GPU 之间的梯度同步通信(all-reduce)。传统内核协议栈(TCP/IP)延迟在 50μs-200μs 级别,对于千卡并行训练来说不可接受。
| 技术 | 原理 | 延迟 | 吞吐 | CNI 实现 |
|---|---|---|---|---|
| RDMA | InfiniBand 网卡,用户态直接访问远端内存,绕过内核 | < 2μs | 200Gbps+ | ib-kubernetes、Network Operator |
| RoCE v2 | 融合以太网跑 RDMA,UDP 封装,需要 PFC/ECN 保证无损 | ~5μs | 100Gbps | Multus + SR-IOV + whereabouts IPAM |
| GPUDirect RDMA | GPU 显存 ↔ 网卡直接 DMA,不经过 CPU 内存 | < 1μs | 400Gbps | 需 NVIDIA Network Operator |
关键变化: 这类 Pod 不经过 CNI 的内核网络栈(veth/bridge/iptables),而是通过 SR-IOV 拿到 VF(虚拟物理网卡),直接接入 RDMA 网络。CNI 只负责分配 VF 和 IP。
| |
2. eBPF 数据路径加速
传统 K8S 网络路径中,iptables 规则链遍历是主要性能瓶颈。Service 数量 >1000 时,每个新连接都要遍历完整链才能找到匹配规则,延迟分布出现长尾。
| 对比维度 | iptables(kube-proxy) | Cilium eBPF |
|---|---|---|
| Service 匹配 | O(n) 线性遍历 | O(1) eBPF Map 哈希查找 |
| 连接跟踪 | Linux conntrack(全局锁) | 独立 eBPF conntrack |
| 包在宿主机路径 | veth → bridge → iptables(多轮 Netfilter 钩子) | veth → TC eBPF(单轮) |
| 延迟分布 | 长尾(P99 可达数十ms) | 稳定(P99 接近 P50) |
AI 场景为什么更需要 eBPF? 分布式训练的 all-reduce 流量是 burst 型的——同步时瞬间涌出大量连接,iptables 在并发连接建立时延迟尖峰尤为突出。Cilium 用 eBPF 替代后,Service 访问延迟均值从 ~1ms 降到 ~0.2ms,P99 降幅更大。
3. 多网卡场景
AI 训练节点通常配备双网卡:一个低速管理面(eth0),一个高速 RDMA 面(eth1/ib0)。需要 CNI 支持多网络接口。
| 组件 | 作用 | 管理网络 |
|---|---|---|
| Multus | 多网卡 CNI 调度器——给 Pod 分配多张网卡 | 委托其他 CNI 插件为每张网卡分配 IP |
| Cilium/Flannel | 管理面网络(Pod 互通、DNS、Pull 镜像) | eth0 |
| SR-IOV / ipvlan | RDMA 高速面(GPU 间通信) | eth1 / ib0 |
| |
4. Gateway API 取代 Ingress
K8S 社区从 Ingress v1 向 Gateway API 迁移,对 CNI 的影响是——Ingress Controller 不再是独立 Sidecar,可以集成到 CNI 的数据路径中。
| 对比 | Ingress | Gateway API |
|---|---|---|
| 标准化 | K8S v1.19 GA,功能简单(L7 HTTP 路由) | v1.0 2023.10 GA,支持 L4/L7、TLS、跨命名空间 |
| 实现耦合 | 独立 Ingress Controller(nginx/traefik) | 可集成进 CNI 数据路径(Cilium 已支持) |
| 流量路径 | 客户端 → Ingress Controller Pod → Service → Pod(多一跳) | 客户端 → eBPF L7 代理 → Pod(少一跳) |
| Cilium 支持 | 不直接支持 Ingress | 原生支持 Gateway API(Cilium 1.14+) |
| |
5. 总结
CNI 领域最近两年的演进方向:从 Pod 互通向端到端可编程数据路径演进。
| 方向 | 之前 | 现在 |
|---|---|---|
| 数据路径 | 内核协议栈(TCP/IP) | RDMA 绕过内核 + eBPF 在内核编程 |
| Service | kube-proxy + iptables | eBPF 替代 kube-proxy |
| Ingress | 独立 Ingress Controller | Gateway API 集成进 CNI 数据路径 |
| 网络策略 | iptables L3/L4 | eBPF L3/L4/L7 |
| 网卡数量 | 单网卡 | Multus 多网卡标配 |
| 可观测性 | tcpdump / netstat | Hubble / eBPF 原生指标 |
6. 当前未解决的问题
尽管演进很快,以下几个问题在生产落地中仍缺乏成熟方案:
| 问题 | 现状 | 影响 |
|---|---|---|
| GPU 网络多租户隔离 | SR-IOV VF 直通后,VF 之间的流量不经过内核,无法用 Netfilter/eBPF 做策略 | 不同租户的 GPU Pod 可能意外互通,安全边界模糊 |
| RDMA 与 K8S QoS 脱节 | K8S 的 CPU/内存 QoS(Guaranteed/Burstable)无法延伸到 RDMA 网络带宽控制 | 一个 Pod 的 all-reduce 流量可能占满 RoCE 链路,影响邻居 Pod |
| eBPF 调试门槛高 | Cilium 数据路径出错时,传统工具(tcpdump/ss/netstat)看不到 eBPF Map 内部状态 | 排障需要 cilium monitor、bpftool 等专用工具,学习曲线陡峭 |
| 多 CNI 组合排障困难 | Multus + Cilium + SR-IOV 三层组合,任一环节配置错误都表现为 Pod 不通 | 排查需要同时理解三个 CNI 的配置格式和调用顺序 |
| Gateway API 生态未成熟 | 2024 年虽已 GA,但大部分入口控制器(nginx/traefik)仍以 Ingress 为主,迁移路径长 | 生产环境同时维护 Ingress + Gateway API 两套配置 |
7. 下一步方向
| 方向 | 说明 | 预计成熟时间 |
|---|---|---|
| DPU/SmartNIC 卸载 | 将 CNI 数据路径(veth、路由、隧道封装)卸载到智能网卡硬件,宿主机 CPU 零消耗 | 2-3 年(NVIDIA BlueField/Intel IPU 已在试点) |
| eBPF 替代更多内核子系统 | Cilium 已替换 kube-proxy,下一步目标:替换 conntrack、替换 netfilter 全部钩子 | 1-2 年(Cilium 1.16+ 计划) |
| CNI-GPU 联合调度 | K8S 调度器感知 GPU 拓扑(NVLink/NVSwitch)和网络拓扑,Pod 被调度到同机架以减少跨机通信 | 1-2 年(Kueue/Volcano 已有原型) |
| 标准化的高性能 CNI API | CNCF 社区讨论将 SR-IOV、RDMA 分配标准化为 CNI 规范的扩展,不再依赖厂商插件 | 2-3 年 |
| AI 训练网络可观测性 | 在 all-reduce 通信路径上埋点,监控 GPU 间通信带宽、延迟、重传,对训练效率建模 | 1 年(NVIDIA NSight/Grafana 已有集成) |