3.7. 在子网间建立通信
在典型的 OpenShift Container Platform 集群设置中,所有节点(包括 control plane 和计算节点)都驻留在同一网络中。但是,对于边缘计算场景,定位接近边缘的计算节点会很有用。这通常涉及将不同的网络段或子网用于与 control plane 和本地计算节点使用的子网不同的网络段或子网。此类设置可以降低边缘的延迟并允许增强的可扩展性。
在安装 OpenShift Container Platform 前,您必须正确配置网络,以确保包含远程节点的边缘子网可以访问包含 control plane 节点的子网,并从 control plane 接收流量。
在集群安装过程中,将永久 IP 地址分配给 install-config.yaml 配置文件的网络配置中的节点。如果不这样做,节点可能会被分配一个临时 IP 地址,该地址可能会影响流量到达节点的方式。例如,如果节点分配了临时 IP 地址,并且为节点配置了绑定接口,则绑定接口可能会收到不同的 IP 地址。
您可以通过配置用户管理的负载均衡器来代替默认负载均衡器,在同一子网或多个子网中运行 control plane 节点。使用多个子网环境,您可以降低 OpenShift Container Platform 集群因为硬件故障或网络中断而失败的问题。如需更多信息,请参阅"配置用户管理的负载均衡器"和"配置用户管理的负载均衡器"。
在多个子网环境中运行 control plane 节点需要完成以下关键任务:
-
通过在
install-config.yaml文件的loadBalancer.type参数中指定UserManaged来配置用户管理的负载均衡器,而不是默认的负载均衡器。 -
在
install-config.yaml文件的ingressVIPs和apiVIPs参数中配置用户管理的负载均衡器地址。 -
将多个子网无类别域间路由 (CIDR) 和用户管理的负载均衡器 IP 地址添加到
install-config.yaml文件中的networking.machineNetworks参数。
使用多个子网部署集群需要使用虚拟介质,如 redfish-virtualmedia 和 idrac-virtualmedia。
此流程详细介绍了允许第二个子网中的远程计算节点与第一个子网中的 control plane 节点有效通信所需的网络配置,并允许第一个子网中的 control plane 节点与第二个子网中的远程 worker 节点有效通信。
在此过程中,集群跨越两个子网:
-
第一个子网 (
10.0.0.0) 包含 control plane 和本地计算节点。 -
第二个子网 (
192.168.0.0) 包含边缘计算节点。
流程
配置第一个子网与第二个子网通信:
运行以下命令,以
root用户身份登录 control plane 节点:sudo su -
$ sudo su -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取网络接口的名称:
nmcli dev status
# nmcli dev statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,通过网关向第二个子网(
192.168.0.0)添加路由:nmcli connection modify <interface_name> +ipv4.routes "192.168.0.0/24 via <gateway>"
# nmcli connection modify <interface_name> +ipv4.routes "192.168.0.0/24 via <gateway>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<interface_name>替换为接口名称。使用实际网关的 IP 地址替换<gateway>。示例
nmcli connection modify eth0 +ipv4.routes "192.168.0.0/24 via 192.168.0.1"
# nmcli connection modify eth0 +ipv4.routes "192.168.0.0/24 via 192.168.0.1"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用更改:
nmcli connection up <interface_name>
# nmcli connection up <interface_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<interface_name>替换为接口名称。验证路由表以确保路由已被成功添加:
ip route
# ip routeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对第一个子网中的每个 control plane 节点重复前面的步骤。
注意调整命令以匹配您的实际接口名称和网关。
将第二个子网配置为与第一个子网通信:
运行以下命令,以
root用户身份登录远程计算节点:sudo su -
$ sudo su -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取网络接口的名称:
nmcli dev status
# nmcli dev statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,通过网关向第一个子网(
10.0.0.0)添加路由:nmcli connection modify <interface_name> +ipv4.routes "10.0.0.0/24 via <gateway>"
# nmcli connection modify <interface_name> +ipv4.routes "10.0.0.0/24 via <gateway>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<interface_name>替换为接口名称。使用实际网关的 IP 地址替换<gateway>。示例
nmcli connection modify eth0 +ipv4.routes "10.0.0.0/24 via 10.0.0.1"
# nmcli connection modify eth0 +ipv4.routes "10.0.0.0/24 via 10.0.0.1"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用更改:
nmcli connection up <interface_name>
# nmcli connection up <interface_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<interface_name>替换为接口名称。运行以下命令,验证路由表以确保路由已被成功添加:
ip route
# ip routeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对第二个子网中的每一计算节点重复前面的步骤。
注意调整命令以匹配您的实际接口名称和网关。
配置网络后,测试连接以确保远程节点可以访问 control plane 节点,control plane 节点可以访问远程节点。
从第一个子网中的 control plane 节点,运行以下命令来 ping 第二个子网中的远程节点:
ping <remote_node_ip_address>
$ ping <remote_node_ip_address>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 ping 成功,则意味着第一个子网中的 control plane 节点可以访问第二个子网中的远程节点。如果您没有收到响应,请检查网络配置并重复该节点的步骤。
在第二个子网中的远程节点中,运行以下命令来 ping 第一个子网中的 control plane 节点:
ping <control_plane_node_ip_address>
$ ping <control_plane_node_ip_address>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 ping 成功,则意味着第二个子网中的远程计算节点可以访问第一个子网中的 control plane。如果您没有收到响应,请检查网络配置并重复该节点的步骤。