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。

相关推荐
Tao____10 小时前
企业级物联网平台
java·网络·物联网·mqtt·网络协议
OpsEye10 小时前
Redis 内存碎片的隐形消耗——如何用 memory purge 命令释放空间?
运维·网络·数据库·redis·缓存·内存·监控
say_fall10 小时前
微机原理:微型计算机基础
服务器·网络·单片机·微机原理
鋆雨无欢丶10 小时前
docker证书认证问题
运维·docker·容器
阿杰 AJie10 小时前
Docker 容器启动的全方位方法汇总
运维·docker·容器
ipooipoo118810 小时前
跨境电商IP选型指南:静态IP vs 动态IP 的区别
网络·网络协议·tcp/ip
克里斯蒂亚诺更新10 小时前
理解即时通信Socket以及用NodeJs实现WebSocket
网络·websocket·网络协议
原神启动110 小时前
K8S(七)—— Kubernetes Pod 基础概念与实战配置
云原生·容器·kubernetes
stillaliveQEJ10 小时前
【计算机网络】网络发展历程与网络模型
网络·计算机网络