27.7. 为服务外部 IP 配置 ingress 集群流量
您可以使用 MetalLB 实现或 IP 故障转移部署,将 ExternalIP 资源附加到服务,以便该服务可用于 OpenShift Container Platform 集群外的流量。以这种方式托管外部 IP 地址仅适用于在裸机硬件上安装的集群。
您必须确保正确配置外部网络基础架构,将流量路由到该服务。
27.7.1. 先决条件
- 您的集群被配置为启用了 ExternalIP。如需更多信息,请参阅为服务配置 ExternalIPs。 注意- 对于 egress IP,不要使用相同的 ExternalIP。 
27.7.2. 将 ExternalIP 附加到服务
您可以将 ExternalIP 资源附加到服务。如果您将集群配置为自动将资源附加到服务,您可能不需要手动将 ExternalIP 附加到该服务。
此流程中的示例使用 IP 故障转移配置手动将 ExternalIP 资源附加到集群中的服务。
流程
- 在 CLI 中输入以下命令来确认 ExternalIP 资源的兼容 IP 地址范围: - oc get networks.config cluster -o jsonpath='{.spec.externalIP}{"\n"}'- $ oc get networks.config cluster -o jsonpath='{.spec.externalIP}{"\n"}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 如果设置了 - autoAssignCIDRs,且您没有在 ExternalIP 资源中为- spec.externalIPs指定值,OpenShift Container Platform 会自动将 ExternalIP 分配给新的- Service对象。
- 选择以下选项之一将 ExternalIP 资源附加到服务: - 如果要创建新服务,请在 - spec.externalIPs字段中指定一个值,在- allowedCIDRs参数中指定一个包括一个或多个有效 IP 地址的数组。- 支持 ExternalIP 资源的服务 YAML 配置文件示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 如果您要将 ExternalIP 附加到现有服务中,请输入以下命令。将 - <name>替换为服务名称。将- <ip_address>替换为有效的 ExternalIP 地址。您可以提供多个以逗号分开的 IP 地址。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例如: - oc patch svc mysql-55-rhel7 -p '{"spec":{"externalIPs":["192.174.120.10"]}}'- $ oc patch svc mysql-55-rhel7 -p '{"spec":{"externalIPs":["192.174.120.10"]}}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - "mysql-55-rhel7" patched - "mysql-55-rhel7" patched- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 要确认一个 ExternalIP 地址已附加到该服务,请输入以下命令。如果为新服务指定 ExternalIP,您必须首先创建该服务。 - oc get svc - $ oc get svc- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE mysql-55-rhel7 172.30.131.89 192.174.120.10 3306/TCP 13m - NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE mysql-55-rhel7 172.30.131.89 192.174.120.10 3306/TCP 13m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow