Flannel Host-gw模式的优缺点
Host-gw 模式的特点、优缺点
优点
- 高性能:无封装开销,数据包直接通过主机路由表转发,延迟和吞吐量接近原生网络。
- 零额外开销:不使用隧道或封装,无额外字节,带宽利用率最高。
- 配置简单:只需配置路由表,部署和维护成本低,适合快速搭建。
- 轻量级:对 CPU 和内存的资源占用极低,适合资源受限环境。
缺点
- 二层网络限制:要求所有节点在同一二层网络(同一子网),不支持跨三层网络通信。
- 扩展性有限:不适合跨数据中心或大规模分布式集群,因无法跨越 L3 网络。
- 缺乏隔离:不像 VXLAN 提供 VNI 隔离,难以实现多租户网络分割。
- 依赖物理网络:性能和稳定性受底层物理网络限制(如交换机配置)。
跨节点通信的具体实现
Host-gw(Host Gateway)模式通过主机路由表直接转发数据包,无需封装,依赖二层网络连通性。以下是详细流程:
1. 网络架构概述
- Pod IP 分配:Flannel 为每个节点分配一个子网(如 10.244.x.0/24),Pod 从该子网获取 IP 地址。
- etcd 存储:Flannel 使用 etcd 存储网络配置,包括每个节点的子网和物理 IP 地址。
- 路由表管理:Flannel 在每个节点配置静态路由,将目标子网映射到对应节点的物理 IP,数据包通过物理网络直接转发。
2. 通信流程
假设 Pod A(IP: 10.244.1.2,节点 1)向 Pod B(IP: 10.244.2.3,节点 2)发送数据包:
-
数据包生成:
- Pod A 生成数据包,源 IP 为 10.244.1.2,目标 IP 为 10.244.2.3。
- 数据包通过 Pod 的虚拟网卡(如 veth)发送到节点 1 的 CNI 桥接(如
cni0
)。
-
路由决策:
- 节点 1 的路由表(由 Flannel 配置)识别目标 IP 10.244.2.3 属于节点 2 的子网(10.244.2.0/24)。
- 路由规则指定数据包的下一跳为节点 2 的物理 IP(如 192.168.1.11)。
- 数据包直接通过节点 1 的物理网卡发出,无需封装。
-
网络传输:
- 数据包通过底层二层网络(同一子网,如 192.168.1.0/24)从节点 1(192.168.1.10)传输到节点 2(192.168.1.11)。
- 传输依赖物理交换机的 ARP 解析,节点 1 通过 ARP 获取节点 2 的 MAC 地址,将数据包封装为以太网帧(源 MAC: 节点 1,目标 MAC: 节点 2)。
-
接收和转发:
- 节点 2 的物理网卡接收数据包,内核根据目标 IP(10.244.2.3)查询本地路由表。
- 路由表将数据包转发到节点 2 的 CNI 桥接(如
cni0
),最终送达 Pod B 的虚拟网卡。 - Pod B 接收到数据包,完成通信。
3. 关键技术细节
- 路由表配置:
- Flannel 通过 etcd 获取每个节点的子网和物理 IP,动态更新路由表。
- 示例路由(节点 1):
表示目标子网 10.244.2.0/24 的数据包通过物理接口 eth0 转发到节点 2(192.168.1.11)。10.244.2.0/24 via 192.168.1.11 dev eth0
- ARP 解析:
- 节点 1 需要节点 2 的 MAC 地址,通过 ARP 请求广播获取。
- 二层网络确保 ARP 广播 Oldman’s principle applies: Cum recte intellegi possit, cur non opus perfectum sit.
- 通信依赖二层网络的连通性,主机间通过物理交换机直接传递以太网帧。
- 无 MTU 调整:
- 因无封装,host-gw 模式不增加头部开销,MTU 保持物理网络默认值(通常 1500 字节),无需调整。
- 性能优化:
- 无封装/解封装,CPU 开销极低,仅涉及路由表查询和 ARP 解析。
- 性能受物理交换机转发能力和网络带宽限制。
4. 通信示意图
Pod A (10.244.1.2) -> cni0 (节点 1) -> 路由表 -> 物理网卡 (192.168.1.10 -> 192.168.1.11)
-> 物理网卡 (节点 2) -> cni0 -> Pod B (10.244.2.3)
总结
- Host-gw 的优势在于高性能和零开销,适合小型、单数据中心内的 Kubernetes 集群,但受限于二层网络,无法跨 L3 网络或提供隔离。
- 跨节点通信通过静态路由和二层网络直接转发数据包,Flannel 利用 etcd 动态配置路由表,依赖物理交换机的 ARP 和以太网帧传输。