配置集中式网关
集中式网关允许子网内的 Pods 使用固定 IP 访问外部网络。这对于网络审计、IP 白名单和防火墙规则管理等安全操作尤为重要,因为您需要识别和控制来自特定源 IP 的流量。在集中式网关模式下,所有来自 Pods 的出站流量都会通过指定的网关节点路由,实现集中式的网络策略执行和监控。
NOTE
集中子网下的 Pods 无法通过 hostport 或带有 externalTrafficPolicy: Local 的 NodePort 类型 Service 访问。
如果您希望子网内的流量使用固定 IP 访问外部网络,以便进行审计和白名单等安全操作,
可以将子网中的网关类型设置为 centralized。
在集中式网关模式下,Pods 访问外部网络的报文首先会被路由到特定节点的 ovn0 网卡,
然后通过主机的路由规则出站。
当 natOutgoing 设置为 true 时,Pod 访问外部网络时将使用特定节点的 IP。
集中式网关示例如下,其中 gatewayType 字段为 centralized,
gatewayNode 为 Kubernetes 中特定机器的 NodeName。
- 如果集中式网关想指定机器的特定网卡用于出站网络,
gatewayNode格式可以改为kube-ovn-worker:172.18.0.2, kube-ovn-control-plane:172.18.0.3。 - 自 Kube-OVN v1.12.0 起,subnet crd 定义中新增了
enableEcmp字段,用于将 ECMP 开关迁移到子网级别。您可以根据不同子网设置是否启用 ECMP 模式。kube-ovn-controller部署中的enable-ecmp参数不再使用。升级到 v1.12.0 版本后,子网开关会自动继承原全局开关参数的值。
NOTE
在集中式网关 ECMP 模式下,kube-ovn-controller 通过 ping 主动探测节点状态,5 秒内检测故障,5-10 秒内完成切换,期间可能会有部分流量失败。
在集中式网关主备模式下,切换基于节点 Ready 状态,断电情况下可能需要几分钟完成切换。
使用标签选择器指定网关节点
除了直接指定节点名称外,您还可以使用 gatewayNodeSelectors 通过标签选择器动态选择网关节点。
这种方式更灵活,尤其适用于节点名称不固定或需要基于标签动态选择网关的场景。
NOTE
- 如果
gatewayNode不为空,则优先使用gatewayNode,忽略gatewayNodeSelectors。 - 多个选择器之间采用 OR 逻辑——匹配任意选择器的节点都会成为网关节点。
- 当节点标签发生变化时,系统会自动更新网关节点列表。