3. 网络拓扑设计:扁平网络、Overlay网络、Underlay网络、混合拓扑场景

Kubernetes 网络拓扑的选择直接决定了集群的转发效率、故障隔离粒度以及运维复杂度。在生产环境中,没有一种拓扑能适用于所有场景;理解扁平、Overlay、Underlay 及混合拓扑的底层原理与性能特征,是进行 Helm 参数协同调优的前提。

3.1 四种核心拓扑模型对比

拓扑类型 转发路径 封装开销 MTU 影响 典型场景
扁平网络 Pod ↔ Node 同一二层/三层 无 无额外损耗 小规模开发集群、物理机直连
Overlay 网络 Pod → VTEP → 隧道 → VTEP → Pod VXLAN/Geneve/IPIP 50~100 字节 需降低 50~100 多租户、跨机房、公有云
Underlay 网络 Pod 直接使用 Node 物理网络 无 无额外损耗 高性能计算、低延迟场景
混合拓扑 部分 Overlay + 部分 Underlay 按需 需分段规划 分级服务、敏感业务隔离
性能关键指标: Overlay 每增加 50 字节封装头,在 1500 MTU 链路上有效载荷减少 3.3%;若未调整 Pod MTU,TCP 分段将导致吞吐量下降 15%~25%。

3.2 扁平网络拓扑

扁平网络是最原始的 K8s 网络模型:每个 Pod 被分配与 Node 同网段的 IP,Pod 之间通过宿主机的路由表直接通信,无需额外封装。这种拓扑在小型集群(< 50 节点)中表现优异,延迟接近物理网卡性能。

  • 优势: 零封装开销,吞吐量可达线速;tcpdump 可直接抓取 Pod 流量,排障直观。
  • 劣势: IP 地址规划受限,Pod 数量受限于子网大小;跨子网通信需要外部路由配合,扩展性差。
  • 适用 CNI: macvlan、ipvlan、host-gw 模式(Calico)。
# 扁平网络下 Pod 与 Node 同网段示例
Node IP:      10.0.1.10/24
Pod IP:       10.0.1.20/24
Gateway:      10.0.1.1
# 无隧道封装,直接二层转发

3.3 Overlay 网络拓扑

Overlay 网络通过在现有三层网络之上构建虚拟化隧道层,使 Pod 可以拥有独立于物理网络的 IP 空间。这是当前公有云和多租户场景中最主流的方案。

封装协议选择: VXLAN(Linux 内核原生支持,UDP 8472)适合通用场景;Geneve(UDP 6081)支持更丰富的元数据扩展;IPIP 封装最小但仅支持 IPv4 单播。

Overlay 网络的核心性能瓶颈在于 隧道封装/解封装 的 CPU 开销以及 MTU 链式降低。以 VXLAN 为例:

  • 物理网络 MTU = 1500 → Pod 网卡 MTU 必须 ≤ 1450(50 字节 VXLAN 头)。
  • 若物理网络启用 jumbo frame(MTU 9000),Pod MTU 可设为 8950,吞吐量提升显著。
  • 封装操作在 VTEP(VXLAN Tunnel Endpoint)上进行,内核态处理延迟约 2~5 μs,DPDK 加速可降至亚微秒级。
# Overlay 网络 MTU 链式调整示例(Helm values)
cni:
  type: calico
  mtu: 1450          # 物理 MTU 1500 - 50 封装头
  overlay: vxlan
  vxlanPort: 4789

# 若物理网络支持 jumbo frame
cni:
  mtu: 8950          # 物理 MTU 9000 - 50 封装头

3.4 Underlay 网络拓扑

Underlay 网络让 Pod 直接“挂载”到物理网络接口上,Pod IP 与 Node IP 处于同一路由域。这种拓扑消除了封装开销,但要求底层网络设备支持大量 MAC/IP 学习,对交换机规格有较高要求。

  • 性能特征: 延迟接近裸机,P99 延迟通常 < 10 μs;吞吐量可达 40Gbps 线速。
  • 运维代价: 每个 Pod 的 IP 都需要在物理交换机上注册,大规模集群(> 200 节点)可能导致 MAC 表溢出。
  • 典型实现: macvlan bridge 模式、SR-IOV、Calico BGP 直连模式。
避坑提示: Underlay 网络下,Pod 迁移(如 Deployment 滚动更新)会导致旧 IP 被立即释放,新 Pod 可能分配到不同 IP。若业务依赖固定 IP 白名单,必须配合 StatefulSet 或 IPAM 预留策略。

3.5 混合拓扑场景

混合拓扑在同一集群内同时运行 Overlay 和 Underlay 网络,通常通过 多 CNI 插件 或 NetworkAttachmentDefinition(NAD) 实现。这种设计在金融、实时音视频、AI 训练等场景中越来越普遍。

业务类型 推荐拓扑 原因
Web API / 微服务 Overlay 灵活调度,多租户隔离
数据库 / 缓存 Underlay 低延迟,零封装开销
AI 训练 / HPC Underlay + RDMA GPU 直接通信,绕过 CPU
日志 / 监控采集 Overlay 无需高性能,简化网络规划

混合拓扑的 Helm 参数协同需要为不同工作负载设置独立的 values.yaml 覆盖:

# 全局默认使用 Overlay
global:
  network:
    mode: overlay
    mtu: 1450

# 数据库 StatefulSet 使用 Underlay
statefulset:
  db:
    network:
      mode: underlay
      mtu: 1500
      interface: eth1
      ipam:
        type: host-local
        subnet: "10.100.0.0/24"

3.6 拓扑选择决策流程

K8s 网络拓扑选择决策流程 集群规模 & 性能需求 节点 < 50 ? 且无多租户 扁平网络 延迟敏感? (P99 < 20μs) Underlay 多业务混合? (DB + API + AI) 混合拓扑 Overlay 决策要点 • 扁平网络:适合小规模、低运维、无多租户场景 • Overlay:默认选择,灵活但需调整 MTU 和 CPU 开销 • Underlay:高性能专用,需交换机支持和 IPAM 规划

3.7 Helm 参数协同要点

无论选择哪种拓扑,Helm 部署时都需要通过 values 文件精确控制网络参数。以下是不同拓扑下的关键参数对照:

参数路径 扁平网络 Overlay 网络 Underlay 网络 混合拓扑
cni.type calico/host-gw calico/vxlan macvlan/sriov multus + 辅 CNI
cni.mtu 1500 1450 1500 按接口独立设置
ipam.type host-local calico-ipam whereabouts 多 IPAM 共存
routing.bgp 可选 不需要 推荐 按需启用
performance.cpuAffinity 不敏感 建议绑定 必须绑定 按工作负载
Helm 参数协同最佳实践: 在 Chart 的 values.yaml 中定义全局网络默认值,然后通过 --set 或子 Chart 的 values 覆盖特定工作负载的网络配置。使用 helm get values 验证最终生效的参数组合。