Kubernetes 网络模式深入解析?

文章目录

Kubernetes 的网络模型有一个核心原则:所有 Pod 都可以不通过 NAT(网络地址转换)而直接互相通信。

为了实现这个"大平层"网络,CNI(容器网络接口)插件主要通过三种模式来实现。你提到的 Underlay 确实存在,它是与 Overlay 相对的概念。

以下是 Kubernetes 网络模式的通俗解构:


1. Overlay 模式(隧道模式)

形象比喻: 像是在现有的公路上(物理网)加盖了一层"封闭式高架桥"(逻辑网)。

  • 技术原理: 封包传输。Pod 发出的原始包会被包装在一个"宿主机包"里。当包到达目的地节点时,再拆掉外壳,取出原始包。常见的协议有 VxLANIPIP
  • Underlay 关系: 它对底层物理网络(Underlay)没有任何要求,只要节点之间 IP 能通,高架桥就能盖起来。
  • 优点: 兼容性极强,不受底层网络网段、交换机配置限制。
  • 缺点: 封包拆包消耗 CPU;包头变大导致有效载荷减少(MTU 问题);性能损耗约 5%~15%。
  • 主流插件: Flannel (VxLAN), Calico (IPIP/VxLAN)。

2. Routing 模式(路由模式)

形象比喻: 节点就是"邮局"。每个节点告诉邻居:"我这里负责 10.244.1.0 段的邮递,有这类信件请传给我。"

  • 技术原理: 纯路由转发。Pod 的原始包直接在物理网络上传输,不封包。通过在主机上配置静态路由或使用 BGP 协议 动态告诉交换机/其他节点如何到达 Pod IP。
  • Underlay 关系: 它是 Overlay 与 Underlay 之间的桥梁。它利用了 Underlay 的转发能力,但 Pod IP 通常还是独立的私有段。
  • 优点: 性能极高,几乎等同于物理网速。
  • 缺点:
    • Host-Gateway (静态): 要求所有节点必须在同一个二层网段(VLAN)。
    • BGP (动态): 需要底层物理交换机支持 BGP 协议并配合配置。
  • 主流插件: Calico (BGP), Flannel (Host-gw)。

3. Underlay 模式(物理直连模式)

形象比喻: Pod 不再是躲在宿主机后面的"小弟",它直接向物理网络申领"身份证"(IP),和宿主机在地位上是平等的。

  • 技术原理: 直接将 Pod 接入物理网。Pod 的 IP 地址就是物理网络段的一部分(比如和宿主机在同一个网段)。常见的技术有 MACVLANIPvlan 或直接对接云厂商的 VPC
  • 与 Underlay 的关系: 它是真正意义上的 Underlay 方案。Pod 完全依赖物理网络的交换机进行流量调度。
  • 优点: 性能最好,时延最低;外部网络可以直接访问 Pod IP(无需经过 NodePort)。
  • 缺点:
    • 极度消耗物理网络的 IP 资源。
    • 对物理网络环境高度依赖。
    • 网络策略(Security Policy)难以在 K8s 层面控制,通常要在交换机上做。
  • 主流插件: Multus, Macvlan, 云厂商专有 CNI (如阿里云 Terway, AWS VPC CNI)。

总结对比表:网络模式选型

特性 Overlay (隧道) Routing (路由/BGP) Underlay (直连)
性能 一般(有额外开销) 优异(接近线速) 极高(等同物理机)
底层网络要求 无要求,只要 IP 通 需二层互通或交换机支持 BGP 物理网 IP 充足,需交换机配合
跨网段支持 支持 取决于是否开启 BGP 取决于物理网络架构
配置复杂度 简单(一键安装) 中等(需配 BGP 或静态路由) 复杂(需网络组深度参与)
适用场景 跨云、跨网段、追求稳定兼容 大规模、高并发微服务 金融、低延迟通信、老旧系统接入

整合进清单的建议:

在你的"网络服务"清单中,关于 CNI 插件选型,你可以这样描述:

CNI 模式选型建议:

  1. 若追求部署简单、无视物理环境:Overlay (VxLAN/IPIP)
  2. 若追求高性能且节点在同一网段:Routing (Host-gw)
  3. 若具备 BGP 交换机权限且追求极致性能:Routing (BGP)
  4. 若 Pod 需直接暴露在物理网且有极低延迟需求:Underlay (MACVLAN/云专有CNI)

架构师提示: 调研时,重点问客户:"你们的交换机支持 BGP 协议吗?" 或者 "你们允许 Pod 直接占用物理内网 IP 吗?"。这两个问题的答案直接决定了你只能选 Overlay 还是可以尝试 Underlay/Routing。

相关推荐
原来是猿12 小时前
Docker 【 技术架构(1)】
docker·容器·架构
ba_pi13 小时前
k8s删除pod
linux·容器·kubernetes
AskHarries13 小时前
权限模型:Shell、Browser、文件读写的安全边界
服务器·前端·网络
木雷坞13 小时前
Qdrant Docker 部署教程:数据卷、API Key 和集合初始化
运维·docker·容器·知识图谱
咖啡星人k13 小时前
MonkeyCode 网络架构:WebSocket、SSE与实时协作的技术选型
网络·websocket·架构·monkeycode
稷下元歌14 小时前
七天学会plc 加机器视觉完整笔记:S7-1200 数据类型、存储区与寻址方式(I/Q/M/DB 详解)。
网络·数据库·笔记
liulilittle14 小时前
bpftrace 跟踪 tcp_write_xmit (内核TCP写出提交)
网络·网络协议·tcp/ip
星光不负赶路人!14 小时前
【问题解决】xftp工具无法连接Windows问题解决
网络
liulilittle15 小时前
TCP KCC v1.0(卡尔曼拥塞控制)
linux·服务器·网络·tcp/ip·计算机网络·tcp·通信
张忠琳15 小时前
【client-go v0.36.1】tools/cache 深度分析(下篇)— RealFIFO 深度、集成架构、生命周期、设计模式总结
云原生·kubernetes·cache·informer·client-go