2. K8s 网络基础模型:Pod 网络、Service 网络、Node 网络三层模型与 CNI 插件对比

2.1 三层网络模型总览

Kubernetes 网络模型并非单一平面,而是由 Pod 网络、Service 网络 和 Node 网络 构成的逻辑分层体系。理解这三层之间的数据流转与地址空间隔离,是定位网络拓扑瓶颈的前提。

核心原则: 每个 Pod 拥有独立 IP,Pod 之间无需 NAT 直接通信;Service 提供稳定的虚拟 IP 与负载均衡;Node 网络承载集群与外部的物理连通。
K8s 三层网络模型架构 K8s 三层网络模型架构 Node 网络(物理/虚拟网络层) 节点 IP:10.0.1.0/24 | 物理网卡 eth0 | 路由表 & 网关 负责集群节点间通信、外部流量入口(LoadBalancer/Ingress) Service 网络(虚拟 IP 层) ClusterIP:10.96.0.0/12 | kube-proxy (iptables/IPVS) 规则 提供稳定的服务发现与负载均衡,将流量转发到后端 Pod Pod 网络(容器网络层) Pod IP:10.244.0.0/16 | 每个 Pod 拥有独立 IP CNI 插件负责分配 IP、配置网络接口与路由 Pod 网络与 Service 网络地址空间独立 通过 kube-proxy 桥接

2.2 各层网络详解

2.2.1 Pod 网络

  • IP 分配: 每个 Pod 在集群内拥有唯一 IP,由 CNI 插件从预定义的 Pod CIDR 中分配。
  • 通信规则: Pod 之间可以直接通过 IP 通信,无需 NAT,无论是否在同一节点。
  • 网络接口: 每个 Pod 拥有独立的网络命名空间,通过 veth pair 连接到宿主机网桥或路由设备。
  • 常见问题: Pod IP 是动态的,Pod 重启后 IP 可能变化,不适合直接作为服务端点。

2.2.2 Service 网络

  • 虚拟 IP: Service 分配一个固定的 ClusterIP,属于虚拟 IP,不绑定任何物理设备。
  • 流量转发: kube-proxy 通过 iptables 或 IPVS 规则,将发往 ClusterIP 的流量负载均衡到后端 Pod IP。
  • 服务发现: 集群 DNS(CoreDNS)将 Service 名称解析为 ClusterIP,实现服务间调用。
  • 类型扩展: NodePort 和 LoadBalancer 类型在 ClusterIP 基础上增加节点端口或云负载均衡器入口。

2.2.3 Node 网络

  • 物理基础: 节点 IP 是集群中每台服务器的真实 IP,属于底层物理或虚拟网络。
  • 路由职责: 负责跨节点 Pod 网络数据包的转发,依赖节点路由表或 overlay 隧道。
  • 外部入口: NodePort 和 LoadBalancer 类型的 Service 最终依赖 Node 网络暴露服务。
  • 性能关键: Node 网络的带宽、延迟、MTU 配置直接影响跨节点 Pod 通信质量。

2.3 CNI 接口与插件对比

CNI(Container Network Interface)是 K8s 与网络实现之间的标准接口。CNI 插件负责 Pod 网络的创建、IP 分配与网络策略实施。主流插件在数据平面、封装方式与性能上存在显著差异。

对比维度 Calico Flannel Weave
数据平面 纯三层路由(BGP) Overlay(VXLAN/Host-GW) Overlay(Weave Mesh)
封装开销 无封装(BGP 模式) VXLAN 约 50 字节 Weave 约 20-40 字节
网络策略 原生支持(K8s NetworkPolicy) 需额外组件(如 Calico 策略引擎) 原生支持
性能 高(接近宿主机网络) 中(VXLAN 有封装损耗) 中(Weave Mesh 有额外处理)
部署复杂度 中(需 BGP 配置) 低(一键部署) 低(自动发现)
适用场景 大规模、高性能、策略严格 中小规模、快速部署 多云、混合环境
选型建议: 若对网络性能要求极高且需要细粒度网络策略,优先选择 Calico 的 BGP 模式;若追求部署简便且对性能不敏感,Flannel 是经典选择;Weave 在多云互联场景下具有自动加密优势。

2.4 CNI 插件数据流对比

不同 CNI 插件在跨节点 Pod 通信时的数据路径差异,直接影响延迟与吞吐量。以下对比三种插件的典型数据流。

CNI 插件跨节点数据流对比 CNI 插件跨节点 Pod 通信数据流对比 节点 A Pod A (IP: 10.244.1.2) veth → cbr0/caliX eth0: 192.168.1.10 节点 B Pod B (IP: 10.244.2.3) veth → cbr0/caliX eth0: 192.168.1.20 数据路径差异 Calico: 直接路由 (BGP) Flannel: VXLAN 封装/解封装 Weave: 加密 Mesh 转发 Calico 无封装,性能最优;Flannel 和 Weave 引入额外封装开销,但部署更简单 性能对比(相对基准) Calico: ~95% 宿主机性能 Flannel: ~85% Weave: ~80%

2.5 网络瓶颈初步分析

基于三层模型与 CNI 插件特性,常见的网络瓶颈点包括:

  • Overlay 封装损耗: Flannel 和 Weave 的 VXLAN/加密封装增加 CPU 开销与延迟,高吞吐场景下尤为明显。
  • kube-proxy 规则规模: 当 Service 数量超过数千时,iptables 规则更新延迟剧增,IPVS 模式可缓解但仍有连接跟踪压力。
  • Node 网络带宽争用: 所有跨节点 Pod 流量共享节点物理带宽,缺乏 QoS 时易出现拥塞。
  • 路由收敛速度: Calico 的 BGP 模式在大规模节点变动时,路由收敛时间可能影响通信连续性。
注意: 在规划集群网络时,应提前评估 Pod CIDR 与 Service CIDR 的大小,避免地址空间重叠或耗尽。同时,Node 网络的 MTU 设置需与 Overlay 封装头部匹配,防止分片导致性能下降。