2. 网络拓扑核心组件:Node网络、Pod网络、Service网络、Ingress网络四层架构

Kubernetes 网络模型并非单一平面,而是由四个逻辑层次堆叠而成:Node 网络(物理/虚拟主机层)、Pod 网络(容器组互联层)、Service 网络(服务抽象与负载均衡层)、Ingress 网络(南北向流量接入层)。理解这四层的职责、边界及性能瓶颈,是进行网络拓扑调优的前提。

K8s 四层网络拓扑架构 L1: Node 网络(主机层) 物理网卡 / 虚拟网卡 · 主机路由表 · 底层网络设施(VPC/Underlay) MTU 1500/9000 · 带宽 · 延迟 · 跨节点连通性 L2: Pod 网络(容器组层) 每个 Pod 拥有独立 IP · 容器间 localhost 通信 · 跨节点 Pod 直连 CNI 插件(Calico/Flannel/Cilium) · Overlay 封装(VXLAN/IPIP) 网络策略(NetworkPolicy) · 带宽限制 · 连接跟踪 L3: Service 网络(服务抽象层) ClusterIP(虚拟 IP) · kube-proxy(iptables/IPVS/eBPF 模式) 负载均衡算法(RR/LC/DH) · SessionAffinity · ExternalTrafficPolicy Endpoints / EndpointSlice · 服务发现(CoreDNS) L4: Ingress 网络(南北向流量接入层) 七层负载均衡(HTTP/HTTPS/gRPC) · 域名路由 · TLS 终止 Ingress Controller(Nginx/HAProxy/Traefik) · 注解调优 数据包逐层封装/解封装,每层均有性能开销

2.1 Node 网络:基础设施底座

Node 网络是集群的物理或虚拟化底层,决定了集群的带宽上限、延迟基线和跨节点连通性。所有 Pod 流量最终都要经过 Node 网络传输。

参数说明性能影响
MTU最大传输单元(默认 1500,巨型帧 9000)MTU 越大,单包有效载荷越高,CPU 开销越低
网卡队列RSS 多队列、RPS/RFS 分发多队列提升并发收包能力,减少单核瓶颈
主机路由节点路由表、策略路由路由条目过多导致查表延迟增加
底层网络VPC、Underlay、BGP 互联决定跨节点延迟和带宽隔离性
调优要点: 在云环境开启巨型帧(MTU 9000)可显著提升大包吞吐;物理机部署时启用网卡多队列并绑定到不同 CPU 核心。

2.2 Pod 网络:容器互联平面

Pod 网络是 K8s 网络模型的核心:每个 Pod 拥有一个集群内唯一的 IP 地址,所有 Pod 之间可以不经过 NAT 直接通信。该层由 CNI 插件实现。

  • CNI 插件选型: Calico(纯三层/BGP)、Flannel(Overlay VXLAN)、Cilium(eBPF 加速)、Weave(加密 mesh)
  • 封装开销: VXLAN 封装增加 50 字节头部,IPIP 封装增加 20 字节,eBPF 可绕过封装直接路由
  • 网络策略: 基于 iptables/eBPF 实现 Pod 级防火墙,规则数量影响转发性能
  • 跨节点通信: 依赖 Node 网络路由或 Overlay 隧道,延迟比同节点通信高 1~3 倍
性能对比: 同节点 Pod 通信走 veth pair + 网桥(延迟 ~0.1ms);跨节点 Pod 通信走 Overlay 隧道(延迟 ~0.5~2ms)。Cilium 的 eBPF 直路由模式可将跨节点延迟降低 30%~50%。

2.3 Service 网络:服务抽象与负载均衡

Service 引入虚拟 IP(ClusterIP),将一组 Pod 抽象为一个稳定的服务入口。kube-proxy 负责将 ClusterIP 流量转发到后端 Pod。

代理模式实现机制性能特征
iptablesDNAT 规则链规则数量 O(n),大规模集群性能下降明显
IPVS内核态哈希表规则数量 O(1),吞吐高,支持更多调度算法
eBPF (Cilium)BPF 程序直接转发延迟最低,绕过 iptables 和 conntrack 开销
注意: ExternalTrafficPolicy 设置为 Local 时,Service 只转发流量到本地 Pod,可保留客户端源 IP,但可能导致负载不均。Cluster 模式会做二次转发,增加一跳延迟。

2.4 Ingress 网络:南北向流量接入

Ingress 是集群外部流量进入内部的七层网关,负责域名路由、TLS 终止、路径重写、限流等高级功能。Ingress Controller 是实际运行的代理组件。

  • 常见 Controller: ingress-nginx(社区主流)、HAProxy Ingress、Traefik、Kong、AWS ALB Ingress Controller
  • 性能瓶颈: TLS 握手开销、连接池管理、upstream 超时配置、worker 进程数
  • Helm 可调参数: controller.replicaCount、controller.config.proxy-body-size、controller.config.worker-processes、controller.config.keep-alive
最佳实践: 生产环境建议将 Ingress Controller 以 DaemonSet 部署并绑定 hostNetwork,减少 DNAT 跳数;开启 HTTP/2 和 keepalive 以减少连接建立开销。

2.5 四层架构的协同与性能影响

数据包从外部到达 Pod 的完整路径:Ingress → Node 网络 → Service(kube-proxy) → Pod 网络(CNI) → 容器。每一层都可能引入延迟和开销:

层级典型延迟开销主要优化方向
Node 网络0.1~0.5ms(同机房)MTU、网卡队列、NUMA 亲和性
Pod 网络0.1~2ms(跨节点)CNI 选型、封装模式、eBPF 加速
Service 网络0.05~0.3msIPVS/eBPF 替代 iptables
Ingress 网络0.5~5ms(含 TLS)worker 数、keepalive、TLS 会话复用
Helm 协同思路: 后续章节将深入讲解如何通过 Helm values 调整 CNI 配置、kube-proxy 模式、Ingress Controller 参数,实现四层网络的联合调优。例如:在 values 中设置 kubeProxy.mode: ipvs、cni.config.mtu: 9000、ingress-nginx.controller.config.worker-processes: auto。