23.3. 使用 GCP 外部负载均衡器作为服务
您可以通过使用 LoadBalancer
服务在外部公开服务,将 OpenShift Container Platform 配置为使用 GCP 负载均衡器。OpenShift Container Platform 在 GCP 中创建负载均衡器,并创建必要的防火墙规则。
流程
创建新应用程序:
$ oc new-app openshift/hello-openshift
公开负载均衡器服务:
$ oc expose dc hello-openshift --name='hello-openshift-external' --type='LoadBalancer'
这个命令会创建类似以下示例的
LoadBalancer
服务:apiVersion: v1 kind: Service metadata: labels: app: hello-openshift name: hello-openshift-external spec: externalTrafficPolicy: Cluster ports: - name: port-1 nodePort: 30714 port: 8080 protocol: TCP targetPort: 8080 - name: port-2 nodePort: 30122 port: 8888 protocol: TCP targetPort: 8888 selector: app: hello-openshift deploymentconfig: hello-openshift sessionAffinity: None type: LoadBalancer
验证服务是否已创建:
$ oc get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-openshift ClusterIP 172.30.62.10 <none> 8080/TCP,8888/TCP 20m hello-openshift-external LoadBalancer 172.30.147.214 35.230.97.224 8080:31521/TCP,8888:30843/TCP 19m
LoadBalancer
类型和外部 IP 值表示服务使用 GCP 负载均衡器公开应用程序。
OpenShift Container Platform 在 GCP 基础架构中创建所需的对象,例如:
防火墙规则:
$ gcloud compute firewall-rules list | grep k8s k8s-4612931a3a47c204-node-http-hc my-net INGRESS 1000 tcp:10256 k8s-fw-a1a8afaa7762811e88c5242010af0000 my-net INGRESS 1000 tcp:8080,tcp:8888
注意这些防火墙规则应用到使用
<openshift_gcp_prefix>ocp
标记的实例。例如,如果openshift_gcp_prefix
参数的值设置为mycluster
,则必须标记带有myclusterocp
的节点。有关如何在 Compute Engine 虚拟机实例中添加网络标签的更多信息,请参阅添加和删除网络标签。健康检查:
$ gcloud compute http-health-checks list | grep k8s k8s-4612931a3a47c204-node 10256 /healthz
一个负载均衡器:
$ gcloud compute target-pools list | grep k8s a1a8afaa7762811e88c5242010af0000 us-west1 NONE k8s-4612931a3a47c204-node $ gcloud compute forwarding-rules list | grep a1a8afaa7762811e88c5242010af0000 a1a8afaa7762811e88c5242010af0000 us-west1 35.230.97.224 TCP us-west1/targetPools/a1a8afaa7762811e88c5242010af0000
要验证负载均衡器是否已正确配置,请从外部主机运行以下命令:
$ curl 35.230.97.224:8080 Hello OpenShift!