集群网络的核心挑战与Overlay的破局之道
本文灵感来源于真没什么逻辑,由Draveness深度解析
大家好!欢迎来到「Why’s THE Design」系列。在这里,我们每次聚焦一个关键技术设计,拆解其背后的权衡、影响与深层逻辑。如果你有百思不解的技术设计难题,欢迎在评论区留言,说不定就是下一期的主题!
当你深入Kubernetes网络或现代云架构时,“Overlay网络”这个词总会高频出现。但它并非新鲜事物,简单说,它是在现有网络(Underlay)之上构建的虚拟网络层[^1],是网络虚拟化的关键形式。近年来云计算的爆发,正让这项技术从幕后走向台前[^2]。

overlay-network-visual
图 1 - 延展网络(Overlay Network)架构示意
既然叫“覆盖”网络,它必然无法独立存在,其底层支柱正是Underlay网络。两者的关系,恰似物理机与虚拟机:Underlay与物理机是实在的根基,由真实的交换设备与服务器构成;而Overlay与虚拟机则是依托于此、用软件定义的灵活层。

network-and-compute-analogy
图 2 - 网络与计算的虚拟化类比
在探究Overlay的价值前,我们先速览其主流实现。实践中,虚拟可扩展局域网(VxLAN)是搭建Overlay的利器。下图展示了两台物理机如何通过三层IP网络互联:

VxLAN-overlay-network-construction
图 3 - 基于VxLAN构建的Overlay网络
VxLAN的核心在于虚拟隧道端点(VTEP)设备,它负责对数据包进行封装与解封装。
图中,两个VTEP相互通信,同步MAC与IP地址信息。例如,服务器1的VTEP需知晓:访问绿色网络10.0.0.2,需先将数据发往IP为204.79.197.200的服务器2。这些规则可通过手动配置、自动学习或上层管理器下发。当10.0.0.1试图与10.0.0.2通信,一场精密的“数据包裹转运”便开始了:

overlay-network-packet-flow
图 4 - Overlay网络中的数据包旅程
源(10.0.0.1)将IP数据包发往本地VTEP;服务器1的VTEP接收该数据包;提取目标虚拟机的MAC地址;查询本地转发表,找到该MAC对应宿主机IP(204.79.197.200);将原始IP包与虚拟网络标识(VNI)作为载荷,封装进新的UDP包;将此UDP包投入物理网络;服务器2的VTEP接收UDP包;剥离UDP头部,查看VNI;将内层原始IP包转发给目标10.0.0.2;10.0.0.2最终收到来自10.0.0.1的数据;
整个过程中,通信双方感知不到底层复杂的封装与路由,它们仿佛置身于同一个二层广播域。实际上,通信借助三层IP网络与VTEP隧道完成。除了VxLAN,Overlay还有其他实现,但原理相通。尽管封包/解包会带来开销,但Overlay网络为何仍是现代集群的必需品?它主要解决三大核心痛点:
云环境中,跨主机、集群甚至数据中心的虚拟机迁移是常态,业务要求IP不变;单一集群内可能承载数万乃至数十万容器/虚拟机,海量MAC地址与ARP广播会压垮传统网络设备;传统VLAN仅支持4096个隔离网络,难以满足大规模云平台的多租户需求;无缝迁移:让业务在物理世界自由流动Kubernetes已成容器编排标准,而虚拟机仍是众多工作负载的载体。虚拟机迁移——将虚拟机从一台物理机热迁移至另一台——在日常运维中极为常见。大规模集群使资源调度如虎添翼,我们通过迁移提升利用率、实现故障容忍与硬件无关性[^3]。
当宿主机需维护或故障时,其上虚拟机必须迁往他处。为确保业务零中断,IP地址必须保持不变。Overlay在网络层模拟二层,只要IP可达,就能组建大二层网络。虚拟机无论迁至何处,只要仍在Overlay网络内,其IP即可保持不变,业务丝滑无感。

virtual-machine-migration-across-dc
图 5 - 跨数据中心的虚拟机迁移
如图所示,迁移后的虚拟机虽身处不同数据中心,但借助IP网络互联,Overlay能让它们与原集群伙伴仍处于同一二层网络。上层应用对底层网络的复杂变动毫无感知。
规模化解压:应对海量终端的网络风暴传统二层网络依赖MAC地址通信,要求网络设备维护庞大的ARP与MAC表。Kubernetes官方支持上限为5000节点,若每节点仅运行一个容器,压力尚可。但现实是,5000节点集群常容纳数万甚至数十万容器。一个ARP广播就能引发全网风暴,给核心交换设备带来灾难性负载。
VxLAN Overlay网络将原始数据包封装于IP包内。网络只需知晓VTEP设备的MAC地址,即可将数万条MAC表项压缩至数千条。ARP请求也被 confine 在VTEP之间扩散,远端VTEP解包后仅在本地广播,避免流量洪泛。这极大缓解了核心网络设备的压力。

overlay-network-arp-containment
图 6 - Overlay网络如何约束ARP广播域
Overlay与软件定义网络(SDN)[^4]理念深度契合。SDN分离了数据平面(转发)与控制平面(计算路由)。VxLAN RFC7348主要定义数据平面,网络可通过自学习获取MAC与ARP表项[^5]。但在超大规模集群中,引入控制平面进行路由表分发已是必然选择。
超大规模隔离:突破4096的枷锁公有云数据中心需服务海量租户,同一物理集群被划分为多个逻辑租户。为安全与性能,租户间必须严格网络隔离,防止广播干扰与恶意攻击。传统隔离技术VLAN使用12比特标识网络,上限仅4096个。

vlan-header-limitation
图 7 - VLAN头部与数量限制
4096个网络对云巨头而言捉襟见肘。VxLAN使用24比特的VNI标识虚拟网络,可支持约1600万个子网,轻松满足多租户的海量隔离需求。

VxLAN-packet-header
图 8 - VxLAN头部提供巨大地址空间
当然,更多虚拟网络是VxLAN的附带优势,而非决定因素。VLAN扩展协议IEEE 802.1ad支持双标签(QinQ),也能提供24比特的虚拟网络ID[^6]。仅凭隔离需求不足以决定采用Overlay。
总结与展望现代数据中心是跨越集群、可用区甚至地域的庞大实体。Overlay网络作为虚拟机与物理网络间的智能中间层,巧妙地解决了三大难题:
借助VxLAN等构建的大二层网络,虚拟机在跨域迁移后IP不变,保障业务连续性,提升资源利用率与系统韧性;将海量终端MAC地址聚合为少量VTEP地址,大幅削减核心设备表项,抑制ARP广播风暴,支撑超大规模集群;提供远超VLAN的虚拟网络数量(1600万),为多租户场景提供灵活、强力的隔离手段;
记住,Overlay只是一种网络虚拟化技术,本身不直接解决所有规模问题。VxLAN也非唯一选择,在不同场景下,NVGRE、GRE等技术各有千秋。留给读者两个思考题,欢迎在评论区分享你的见解:
VxLAN使用UDP封装传输,那么NVGRE和STT分别采用了什么协议进行封装?在实际的Kubernetes环境中,你会选择哪种技术或方案来部署Overlay网络?如果你对本文内容有任何疑问,或想深入了解其他软件工程的设计决策,欢迎在下方留言。我们会持续关注,并选取有价值的话题进行深度探讨。
扩展阅读与问答
Magisk OverlayFS:如何无损实现系统分区读写?- 技术社区精选问答
干货十足的技术分享,令人受益匪浅。文中提到的补丁方案是否具有普适性?例如,有用户反馈蓝牙模块刷入后无法正常工作。另有三星S20用户表示部署成功。欢迎更多实践者分享你的案例与挑战!