Kubernetes 高级网络笔记:从核心模型到生产级实践全攻略
一、核心网络模型与 CNI
Kubernetes 网络模型的核心要求是:每个 Pod 都拥有唯一的 IP 地址,并且所有 Pod 无需 NAT 就能与其他 Pod 通信。
1. Pod 网络 (Pod Networking)
- IP-per-Pod 模型:每个 Pod 被视为一台独立主机,容器共享 Pod 的网络命名空间(通过 localhost 通信)。
- 通信要求:
- Pod-to-Pod:跨节点可直接通信。
- Pod-to-Service:通过稳定的 ClusterIP 访问服务。
- External-to-Service:外部客户端访问集群服务。
2. 容器网络接口 (CNI - Container Network Interface)
Kubernetes 不实现网络,而是调用 CNI 插件。
工作流程:
- Kubelet 创建 pause 容器并建立网络命名空间。
- 调用 CNI 插件 ADD 命令。
- 插件分配 IP、配置 veth、设置路由。
- 返回结果给 Kubelet。
常见 CNI 插件:
- Flannel(VXLAN/host-gw Overlay 网络,简单)
- Calico(基于 BGP,支持 NetworkPolicy,高性能)
- Cilium(eBPF 内核级实现,功能最强)
- Weave Net(简单 Overlay