本文永久链接: https://www.xtplayer.cn/rke2/set-the-backends-in-rke2-canal-to-host-gw/

Canal 由 Flannel(负责 Pod 间网络)和 Calico(负责 NetworkPolicy)组成,Flannel 的后端默认为 VXLAN。VXLAN 切换为 host-gw,本质上是从 Overlay 网络切换到 Underlay 网络。这一变更的核心价值是显著降低数据平面性能开销 —— host-gw 的性能损失约在 10% 左右,而 VXLAN 则在 20%~30%。

切换前务必确认:所有节点处于相同二层子网,若节点跨子网、跨 VLAN 或处于公有云多可用区,不应启用 host-gw。

VXLAN 与 host-gw 的利弊对比

VXLAN 模式(默认)

工作原理:VXLAN 采用 Overlay 技术,将二层以太网帧封装在 UDP 报文中,通过三层网络传输,构建出一个虚拟的大二层网络。Canal 默认使用此模式,在标准网络环境下即可工作。

维度 说明
优势 拓扑灵活:可跨越不同子网、VLAN 甚至跨云环境通信;
部署门槛低:对底层网络无特殊要求,“开箱即用”;
支持大规模集群:Overlay 可支持更多二层网段,避免物理交换机 MAC 表耗尽
劣势 性能损耗:封装/解封装带来额外 CPU 开销和网络延迟,性能损失约 20%~30%;
小包效率低:VXLAN 头部使报文多出约 50 字节,小包传输时效率明显下降;
MTU 受限:需调低 MTU 以容纳额外头部,配置不当可能导致分片

适用场景:节点跨子网/跨云、混合云环境、对网络策略有基本需求的通用生产集群。

host-gw 模式

工作原理:host-gw 将宿主机作为网关,Flannel 在各节点路由表中写入指向其他节点 Pod 子网的静态路由,下一跳设置为对方节点的 IP。数据包直接通过物理网络转发,不涉及任何封装/解封装

维度 说明
优势 性能最优:无封装开销,性能损失仅约 10%,延迟低、CPU 占用少;
故障排查直观:路由表清晰可见,流量路径不涉及隧道,排障更直接
劣势 拓扑刚性硬性要求所有节点处于同一二层网络,无法跨子网;
路由表膨胀:每新增一个节点,其他所有节点均需增加一条路由条目,大规模集群下可观测性较差;
不可运行时切换:Flannel 后端类型一旦设定,不建议运行时更改,切换通常需要重建集群,或者执行复杂的网络迁移操作

适用场景:所有节点位于同一 VLAN/子网的集群,且对网络性能有较高要求。

切换配置步骤

前提条件检查

二层连通性:所有节点能够直接进行 ARP 解析和以太网帧通信,中间不能有路由器阻隔,也就是说所有节点必须在一个二层子网中。

网卡选择:如节点有多块网卡,建议通过 iface 或者 regexIface 参数显式指定用于 Pod 通信的接口,避免 Flannel 选错网卡。

配置方式(以 RKE2 为例)

在 RKE2 中,通过 HelmChartConfig 覆盖 Canal 的 Flannel 后端配置。

  • 如果是新建集群

    可以在 Rancher UI 创建集群的时候,在 Additional Manifest 中添加以下的 HelmChartConfig 配置。集群创建好之后即可正常生效,无需其他操作。

  • 如果是已有集群

    • 可以直接通过 Rancher UI 的导入 YAML 功能将以下的 HelmChartConfig 配置导入集群。或者在任意 master 节点的 /var/lib/rancher/rke2/server/manifests/rke2-canal-config.yaml 路径添加 YAML 文件。
    • 切换 Backends 配置后,在 Rancher UI 删除所有 Canal Pod,使其重新创建。或者在下游集群中执行 kubectl rollout restart ds rke2-canal -n kube-system 命令重启 Canal Pod。因为在切换 Backends 之前,主机上已经生成大量旧网络规则。为了避免冲突导致 pod 访问异常,建议在重启 Canal Pod 之后再依次重启集群所有节点。
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-canal
namespace: kube-system
spec:
valuesContent: |-
flannel:
backend: "host-gw"
iface: xxx
# regexIface: ^ens(192|224)$

配置回滚

如切换后出现问题,将 backend 改回 "vxlan",再次重启 Canal DaemonSet,并按同样顺序重启节点即可回滚。

选型建议

场景 推荐模式 理由
节点同网段,追求极低延迟 host-gw 性能最优,无封装开销
节点跨子网/跨云 VXLAN host-gw 无法工作,VXLAN 是唯一可行选项
生产环境,不确定底层拓扑 VXLAN 更安全的选择,兼容性最好
大规模集群(数百至上千节点) VXLAN host-gw 的路由表膨胀会带来运维负担