14.4. 为服务外部 IP 配置 ingress 集群流量

您可以将外部 IP 地址附加到服务,使其可用于集群外的流量。这通常只适用于在裸机硬件上安装的集群。必须正确配置外部网络基础架构,将流量路由到该服务。

14.4.1. 先决条件

14.4.2. 将 ExternalIP 附加到服务

您可以将 ExternalIP 附加到服务。如果您的集群被配置为自动分配 ExternalIP,您可能不需要手动将 ExternalIP 附加到该服务。

流程

  1. 可选: 要确认为 ExternalIP 配置了哪些 IP 地址范围,请输入以下命令:

    $ oc get networks.config cluster -o jsonpath='{.spec.externalIP}{"\n"}'

    如果设置了 autoAssignCIDRs,且未指定 spec.externalIPs 项,OpenShift Container Platform 会自动将一个 ExternalIP 分配给新服务。

  2. 将 ExternalIP 附加到服务资源。

    1. 如果要创建新服务,请指定 spec.externalIPs 字段,并提供包括一个或多个有效 IP 地址的数组。例如:

      apiVersion: v1
      kind: Service
      metadata:
        name: svc-with-externalip
      spec:
        ...
        externalIPs:
        - 192.174.120.10
    2. 如果您要将 ExternalIP 附加到现有服务中,请输入以下命令。将 <name> 替换为服务名称。将 <ip_address> 替换为有效的 ExternalIP 地址。您可以提供多个以逗号分开的 IP 地址。

      $ oc patch svc <name> -p \
        '{
          "spec": {
            "externalIPs": [ "<ip_address>" ]
          }
        }'

      例如:

      $ oc patch svc mysql-55-rhel7 -p '{"spec":{"externalIPs":["192.174.120.10"]}}'

      输出示例

      "mysql-55-rhel7" patched

  3. 要确认一个 ExternalIP 地址被附加到该服务,输入以下命令。如果为新服务指定 ExternalIP,需要首先创建服务。

    $ oc get svc

    输出示例

    NAME               CLUSTER-IP      EXTERNAL-IP     PORT(S)    AGE
    mysql-55-rhel7     172.30.131.89   192.174.120.10  3306/TCP   13m

14.4.3. 其他资源