Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

8.8. 启用自动 Egress IP

为外部项目流量启用静态 IP 类似,作为集群管理员,您可以通过将 egressIPs 参数设置为 NetNamespace 资源,将出口 IP 地址分配给命名空间。您只能将单个 IP 地址与一个项目关联。

注意

如果您以多租户模式使用 OpenShift SDN,则无法将出口 IP 地址与与其关联的项目附加到另一个命名空间的任何命名空间一起使用。例如,如果 project1project2 通过运行 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 地址范围相同。

  1. 使用出口 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"]}''
  2. 通过设置哪些节点的 egressCIDRs 字段来指示哪些节点可以托管出口 IP 地址:

    $ oc patch hostsubnet <node_name> -p \
      '{"egressCIDRs": ["<IP_address_range_1>", "<IP_address_range_2>"]}'

    例如,将 node1node2 设置为托管范围为 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"]}'
  3. OpenShift Container Platform 会自动以均衡的方式将特定的出口 IP 地址分配给可用的节点。在本例中,它会将出口 IP 地址 192.168.1.100 分配给 node1,并将出口 IP 地址 192.168.1.101 分配给 node2,或反之。