8.8. 启用自动 Egress IP
与 为外部项目流量启用静态 IP 类似,作为集群管理员,您可以通过将 egressIPs
参数设置为 NetNamespace
资源,将出口 IP 地址分配给命名空间。您只能将单个 IP 地址与一个项目关联。
如果您以多租户模式使用 OpenShift SDN,则无法将出口 IP 地址与与其关联的项目附加到另一个命名空间的任何命名空间一起使用。例如,如果 project1
和 project2
通过运行 oc adm pod-network join-projects --to=project1 project2
命令被连接,则这两个项目都不能使用出口 IP 地址。如需更多信息,请参阅 BZ#1645577。
使用完全自动出口 IP,您可以设置每个节点的 HostSubnet
资源的 egressCIDRs
参数,以指示可以托管的出口 IP 地址范围。请求出口 IP 地址的命名空间与可以托管那些出口 IP 地址的节点匹配,然后将出口 IP 地址分配给这些节点。
高可用性是自动的。如果托管出口 IP 地址的节点停机,并且根据 HostSubnet
资源的 egressCIDR
值托管这些出口 IP 地址的节点,则出口 IP 地址将移到一个新节点。当原始出口 IP 地址节点恢复在线后,出口 IP 地址会自动移动,以在节点之间均衡出口 IP 地址。
您不能在同一节点上使用手动分配和自动分配的出口 IP 地址,或者 IP 地址范围相同。
使用出口 IP 地址更新
NetNamespace
:$ oc patch netnamespace <project_name> -p '{"egressIPs": ["<IP_address>"]}'
您只能为
egressIPs
参数指定一个 IP 地址。不支持使用多 IP 地址。例如,将
project1
分配给 IP 地址 192.168.1.100,将project2
分配给 IP 地址 192.168.1.101:$ oc patch netnamespace project1 -p '{"egressIPs": ["192.168.1.100"]}' $ oc patch netnamespace project2 -p '{"egressIPs": ["192.168.1.101"]}''
通过设置哪些节点的
egressCIDRs
字段来指示哪些节点可以托管出口 IP 地址:$ oc patch hostsubnet <node_name> -p \ '{"egressCIDRs": ["<IP_address_range_1>", "<IP_address_range_2>"]}'
例如,将
node1
和node2
设置为托管范围为 192.168.1.0 到 192.168.1.255 的出口 IP 地址:$ oc patch hostsubnet node1 -p '{"egressCIDRs": ["192.168.1.0/24"]}' $ oc patch hostsubnet node2 -p '{"egressCIDRs": ["192.168.1.0/24"]}'
-
OpenShift Container Platform 会自动以均衡的方式将特定的出口 IP 地址分配给可用的节点。在本例中,它会将出口 IP 地址 192.168.1.100 分配给
node1
,并将出口 IP 地址 192.168.1.101 分配给node2
,或反之。