Underlay 和 Overlay 子网的自动互联
如果一个集群同时具有 Underlay 和 Overlay 子网,默认情况下,Overlay 子网中的 Pod 可以通过使用 NAT 的网关访问 Underlay 子网中 Pod 的 IP。但是,Underlay 子网中的 Pod 需要配置节点路由才能访问 Overlay 子网中的 Pod。
要实现 Underlay 和 Overlay 子网之间的自动互联,可以手动修改 Underlay 子网的 YAML 文件。配置完成后,Kube-OVN 还会使用一个额外的 Underlay IP 连接 Underlay 子网和 ovn-cluster 逻辑路由器,并设置相应的路由规则以实现互联。
目录
操作步骤可选:将 U2O 路由限制为 Overlay CIDR启用 u2oInterconnection 后的 Underlay 子网隔离第 1 步:配置 kube-ovn-controller第 2 步:配置子网隔离操作步骤
-
进入 管理员。
-
在左侧导航栏中,点击 集群管理 > 资源管理。
-
输入 Subnet 以过滤资源对象。
-
点击待修改的 Underlay 子网旁边的 ⋮ > 更新。
-
修改 YAML 文件,在
Spec中添加字段u2oInterconnection: true。 -
点击 更新。
注意:Underlay 子网中现有的计算组件需要重新创建后,变更才会生效。
可选:将 U2O 路由限制为 Overlay CIDR
如果只想让目标地址属于 Overlay 子网 CIDR 的流量通过 U2O 网关路由,可以在同一个 Underlay 子网上启用 u2oFeatures.overlayOnlyRouting。发往其他目的地的流量仍将继续使用物理网关。
此选项要求启用 u2oInterconnection: true。
启用 u2oInterconnection 后的 Underlay 子网隔离
当多个 Underlay 子网都启用了 u2oInterconnection: true 时,它们之间的流量将不再经过物理网关,而是直接通过内部 OVN 网络路由。
如果你需要在两个都启用了 u2oInterconnection 的 Underlay 子网之间进行隔离,则必须先配置 kube-ovn-controller 参数,然后再配置子网隔离。
第 1 步:配置 kube-ovn-controller
修改 kube-ovn-controller Deployment,以禁用对目标逻辑端口 IP 的 connection tracking 跳过:
添加或修改以下参数:
--ls-ct-skip-dst-lport-ips 控制是否跳过发往逻辑端口 IP 的流量的 connection tracking(conntrack)。默认值为 true,会跳过 conntrack 以提升性能。将其设置为 false 不会影响功能,但可能会对性能产生轻微影响。
不过,对于基于 ACL 的隔离的 Underlay 子网,你必须将其设置为 false。否则,网关到 Pod 的流量将失败(例如,ping 请求到达 Pod,但回复被丢弃),因为 ACL 隔离使用 allow-related,它需要 conntrack 状态;如果没有 conntrack,就无法将回复识别为“related”,从而被丢弃。
第 2 步:配置子网隔离
使用以下参数配置子网:
ACL 参数:
acls字段提供了基于优先级的规则评估,比标准 Kubernetes NetworkPolicy 更灵活。- 当使用
to-lport方向时,ip4.src表示入站流量的源 IP。 - 推荐优先级范围:
1002到1899,以避免与系统默认 ACL 规则冲突。