这个系列不教你写 YAML,不教你 kubectl apply。它要回答的问题只有一个:一个包从 Pod A 发出去,到底经过了什么才到达 Pod B? 我们会从 Linux 网络栈的第一个字节开始,逐层拆解虚拟设备、Netfilter、路由、隧道、eBPF,然后进入 Kubernetes 的网络模型、CNI 插件、Service 机制、安全策略,最终走到多集群联邦网络。每篇都带抓包、带代码、带内核源码引用,目标是让你对着 tcpdump 的输出就能说清楚每一跳发生了什么。
适合谁看
- 小白:知道 IP 地址是什么,用过 Docker,想搞清楚 Kubernetes 网络到底怎么回事。建议从第一阶段开始,别跳。
- 工程师:日常运维 K8s 集群,能写 NetworkPolicy,但说不清 kube-proxy 到底做了什么。可以跳过熟悉的 Linux 基础,直接从第二阶段开始。
- 专家:做过 CNI 插件选型,写过 eBPF 程序,想系统梳理一遍知识体系。挑感兴趣的章节看,重点关注第三、五、六阶段。
- 学术:研究容器网络、SDN、数据面加速。第六阶段的性能调优和第七阶段的演进方向会有参考价值。
推荐阅读顺序
不必按顺序全读,根据你的目标选一条路径:
- 只想懂 K8s 网络基础 → 01 → 07 → 08 → 09
- 想做 CNI 选型 → 11 → 12 → 13 → 14
- 想搞安全 → 19 → 20 → 21 → 22
- 想排查故障 → 23 → 25 → 26
- 全部读完 → 按顺序 01-30
目录
第一阶段:Linux 网络基石
Kubernetes 网络不是凭空造出来的,它建立在 Linux 内核几十年积累的网络栈之上。这一阶段把地基打牢。
- 从网卡中断到 socket recv(),一个包在内核里走过的完整路径
- veth、bridge、tun/tap、macvlan/ipvlan——容器网络的基础零件
- 五链四表,kube-proxy 和 NetworkPolicy 的底层引擎
- VXLAN、IPIP、GRE、WireGuard——跨节点通信的几种姿势
- Calico 为什么选 BGP,AS、路由通告、路由反射器
- TC、XDP、socket 级别的 eBPF 程序,Cilium 数据面的基石
第二阶段:Kubernetes 网络模型
有了 Linux 网络基础,现在进入 Kubernetes 的世界。理解它的网络模型、CNI 接口和 Service 抽象。
- 三大保证:Pod-to-Pod、Pod-to-Service、外部访问,以及它们的实现代价
- ADD/DEL/CHECK/VERSION,一个 CNI 插件到底要做什么
- ClusterIP/NodePort/LoadBalancer 的 iptables/ipvs/eBPF 三种实现
- 双栈 Service、双栈 Pod,以及迁移过程中的坑
第三阶段:CNI 插件深度对比
市面上几十种 CNI 插件,选哪个?这一阶段逐个拆解主流方案,最后给出选型框架。
- 最简单的 CNI:VXLAN overlay、host-gw,以及它的天花板在哪
- BGP 路由方案、Felix/BIRD/Typha 架构、eBPF 数据面
- eBPF 原生 CNI、身份识别、Hubble 可观测、Service Mesh
- 性能/功能/运维复杂度多维度对比,给出决策树
第四阶段:服务发现与流量治理
Service 只是起点。DNS 解析、流量拆分、南北向入口、Gateway API——这一阶段讲清楚流量怎么找到目的地。
- 插件链架构、K8s 服务发现、DNS 缓存与性能调优
- Headless Service、ExternalName、TopologyAwareHints、流量本地化
- Nginx/Traefik/Envoy 三大 Ingress 实现对比与选型
- Ingress 的继任者:HTTPRoute、TLSRoute、角色分离模型
第五阶段:网络安全与零信任
网络通了不等于安全。这一阶段从 NetworkPolicy 到零信任网络,逐层加固。
- 原生 NetworkPolicy 的能力边界与 CNI 实现差异
- 基于身份而非 IP 的安全模型、透明加密、mTLS
- 两种数据面的安全策略实现与绕过风险分析
- WireGuard、IPsec、mTLS——传输层加密方案对比与性能代价
第六阶段:性能调优与故障排查
能跑和跑得好是两回事。这一阶段解决”为什么慢”和”为什么断”。
- 隧道封装吃掉的字节、Path MTU Discovery、PMTUD 黑洞问题
- Direct Server Return:跳过反向路径、降低延迟、减少 SNAT
- Hubble、Grafana、eBPF flow log——看见每一个包的去向
- DNS 5s 延迟、conntrack 表满、Service 不通——常见问题的排查套路
第七阶段:多集群与未来
单集群网络搞定了,多集群怎么办?eBPF 的未来在哪?这一阶段看远一点。
- Submariner、Cilium ClusterMesh、Skupper——跨集群 Pod 互通方案
- 多云互联、联邦 Service、全局负载均衡
- eBPF 替代 kube-proxy、替代 sidecar、替代 iptables 的路线图
- Service Mesh 无 sidecar 化、内核网络栈演进、硬件卸载