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 逻辑路由器,设置相应的路由规则以实现互联。
操作步骤
-
进入 管理员。
-
在左侧导航栏点击 集群管理 > 资源管理。
-
输入 Subnet 过滤资源对象。
-
在需要修改的 Underlay 子网旁点击 ⋮ > 更新。
-
修改 YAML 文件,在
Spec中添加字段u2oInterconnection: true。 -
点击 更新。
注意:Underlay 子网中已有的计算组件需要重新创建,修改才会生效。
启用 u2oInterconnection 的 Underlay 子网之间的隔离
当多个 Underlay 子网启用 u2oInterconnection: true 时,它们之间的流量不再经过物理网关,而是通过内部 OVN 网络直接路由。
如果需要在两个都启用了 u2oInterconnection 的 Underlay 子网之间实现隔离,必须先配置 kube-ovn-controller 参数,再配置子网隔离。
第一步:配置 kube-ovn-controller
修改 kube-ovn-controller Deployment,关闭目标逻辑端口 IP 的连接跟踪跳过:
添加或修改如下参数:
--ls-ct-skip-dst-lport-ips 控制是否跳过目标逻辑端口 IP 的连接跟踪(conntrack)。默认值为 true,跳过 conntrack 以提升性能。设置为 false 不影响功能,但可能略微影响性能。
但是,对于基于 ACL 隔离的 Underlay 子网,必须设置为 false。否则,网关到 Pod 的流量会失败(例如 ping 请求能到达 Pod,但回复被丢弃),因为 ACL 隔离使用了 allow-related,需要连接跟踪状态;没有连接跟踪,回复无法被识别为“相关”,因此被丢弃。
第二步:配置子网隔离
对子网配置如下参数:
ACL 参数说明:
acls字段支持基于优先级的规则评估,比 Kubernetes NetworkPolicy 更灵活。- 使用
to-lport方向时,ip4.src表示入站流量的源 IP。 - 推荐优先级范围:
1002到1899,避免与系统默认 ACL 规则冲突。