29.7. 为服务外部 IP 配置 ingress 集群流量
您可以使用 MetalLB 实现或 IP 故障转移部署,将 ExternalIP 资源附加到服务,以便该服务可用于 OpenShift Container Platform 集群外的流量。以这种方式托管外部 IP 地址仅适用于在裸机硬件上安装的集群。
您必须确保正确配置外部网络基础架构,将流量路由到该服务。
29.7.1. 先决条件
您的集群被配置为启用了 ExternalIP。如需更多信息,请参阅为服务配置 ExternalIPs。
注意对于 egress IP,不要使用相同的 ExternalIP。
29.7.2. 将 ExternalIP 附加到服务
您可以将 ExternalIP 资源附加到服务。如果您将集群配置为自动将资源附加到服务,您可能不需要手动将 ExternalIP 附加到该服务。
此流程中的示例使用 IP 故障转移配置手动将 ExternalIP 资源附加到集群中的服务。
流程
在 CLI 中输入以下命令来确认 ExternalIP 资源的兼容 IP 地址范围:
$ oc get networks.config cluster -o jsonpath='{.spec.externalIP}{"\n"}'
注意如果设置了
autoAssignCIDRs
,且您没有在 ExternalIP 资源中为spec.externalIPs
指定值,OpenShift Container Platform 会自动将 ExternalIP 分配给新的Service
对象。选择以下选项之一将 ExternalIP 资源附加到服务:
如果要创建新服务,请在
spec.externalIPs
字段中指定一个值,在allowedCIDRs
参数中指定一个包括一个或多个有效 IP 地址的数组。支持 ExternalIP 资源的服务 YAML 配置文件示例
apiVersion: v1 kind: Service metadata: name: svc-with-externalip spec: externalIPs: policy: allowedCIDRs: - 192.168.123.0/28
如果您要将 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
要确认一个 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