文章目录
- 1. Overlay 模式(隧道模式)
- 2. Routing 模式(路由模式)
- 3. Underlay 模式(物理直连模式)
- 总结对比表:网络模式选型
- 整合进清单的建议:
Kubernetes 的网络模型有一个核心原则:所有 Pod 都可以不通过 NAT(网络地址转换)而直接互相通信。
为了实现这个“大平层”网络,CNI(容器网络接口)插件主要通过三种模式来实现。你提到的Underlay确实存在,它是与Overlay相对的概念。
以下是 Kubernetes 网络模式的通俗解构:
1. Overlay 模式(隧道模式)
形象比喻:像是在现有的公路上(物理网)加盖了一层“封闭式高架桥”(逻辑网)。
- 技术原理:封包传输。Pod 发出的原始包会被包装在一个“宿主机包”里。当包到达目的地节点时,再拆掉外壳,取出原始包。常见的协议有VxLAN和IPIP。
- 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 地址就是物理网络段的一部分(比如和宿主机在同一个网段)。常见的技术有MACVLAN、IPvlan或直接对接云厂商的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 模式选型建议:
- 若追求部署简单、无视物理环境:选Overlay (VxLAN/IPIP)。
- 若追求高性能且节点在同一网段:选Routing (Host-gw)。
- 若具备 BGP 交换机权限且追求极致性能:选Routing (BGP)。
- 若 Pod 需直接暴露在物理网且有极低延迟需求:选Underlay (MACVLAN/云专有CNI)。
架构师提示:调研时,重点问客户:“你们的交换机支持 BGP 协议吗?”或者“你们允许 Pod 直接占用物理内网 IP 吗?”。这两个问题的答案直接决定了你只能选 Overlay 还是可以尝试 Underlay/Routing。