默认 Anthos Service Mesh 安装假设会自动为 LoadBalancer
服务分配外部 IP 地址。在 GKE on VMware 上并非如此。因此,您需要分配一个或多个外部 IP 地址,具体取决于您的服务网格配置:
- Anthos Service Mesh 入站流量网关资源的一个外部 IP 地址,例如您的客户用于从互联网访问工作负载的网关。
- 如果集群存在于服务网格的不同网络中,则需另一个供集群相互通信的外部 IP 地址。这称为东-西网关。
配置入站流量网关 IP 地址
如需为入站流量网关配置外部 IP 地址,请遵循以下一个部分,具体取决于集群的负载均衡模式:
- 使用入站流量网关的外部 IP 地址修补
istio-ingressgateway
服务的配置:kubectl patch svc istio-ingressgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "INGRESS_GATEWAY_IP"}]'
-
在 shell 中查看
istio-ingressgateway
Service 的配置: 系统会显示 Anthos Service Mesh 网关的每个端口。命令输出如下所示:kubectl get svc -n istio-system istio-ingressgateway -o yaml
... ports: - name: status-port nodePort: 30391 port: 15020 protocol: TCP targetPort: 15020 - name: http2 nodePort: 31380 port: 80 protocol: TCP targetPort: 80 - name: https nodePort: 31390 port: 443 protocol: TCP targetPort: 443 - name: tcp nodePort: 31400 port: 31400 protocol: TCP targetPort: 31400 - name: https-kiali nodePort: 31073 port: 15029 protocol: TCP targetPort: 15029 - name: https-prometheus nodePort: 30253 port: 15030 protocol: TCP targetPort: 15030 - name: https-grafana nodePort: 30050 port: 15031 protocol: TCP targetPort: 15031 - name: https-tracing nodePort: 31204 port: 15032 protocol: TCP targetPort: 15032 - name: tls nodePort: 30158 port: 15443 protocol: TCP targetPort: 15443 ...
-
通过负载均衡器公开这些端口。
例如,名为http2
的服务端口具有port
80 和nodePort
31380。假设您的用户集群的节点地址是192.168.0.10
、192.168.0.11
、192.168.0.12
,并且负载均衡器的 VIP 地址是203.0.113.1
。
配置负载均衡器以将发送到203.0.113.1:80
的流量转发到192.168.0.10:31380
、192.168.0.11:31380
或192.168.0.12:31380
。您可以选择要在此给定 VIP 地址上公开的服务端口。
集成模式
手动模式
确认已为入站流量网关分配一个外部 IP 地址。可能会有短暂的延迟,要求您运行/重复此命令,直到您看到所需的结果:
kubectl --context="${CTX_CLUSTER1}" get svc istio-ingressgateway -n istio-system
预期输出为:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.80.6.124 34.75.71.237 ... 51s
配置东-西网关 IP 地址
如需为东-西网关配置外部 IP 地址,请遵循以下一个部分,具体取决于集群的负载均衡模式:
- 使用东-西网关的外部 IP 地址修补
istio-eastwestgateway
服务的配置:kubectl patch svc istio-eastwestgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "EAST_WEST_GATEWAY_IP"}]'
-
在 shell 中查看
istio-eastwestgateway
Service 的配置: 系统会显示 Anthos Service Mesh 网关的每个端口。命令输出如下所示:kubectl get svc -n istio-system istio-eastwestgateway -o yaml
ports: - name: status-port nodePort: 31781 port: 15021 protocol: TCP targetPort: 15021 - name: tls nodePort: 30498 port: 15443 protocol: TCP targetPort: 15443 - name: tls-istiod nodePort: 30879 port: 15012 protocol: TCP targetPort: 15012 - name: tls-webhook nodePort: 30336 port: 15017 protocol: TCP targetPort: 15017 ...
-
通过负载均衡器公开这些端口。
例如,名为http2
的服务端口具有port
80 和nodePort
31380。假设您的用户集群的节点地址是192.168.0.10
、192.168.0.11
、192.168.0.12
,并且负载均衡器的 VIP 地址是203.0.113.1
。
配置负载均衡器以将发送到203.0.113.1:80
的流量转发到192.168.0.10:31380
、192.168.0.11:31380
或192.168.0.12:31380
。您可以选择要在此给定 VIP 地址上公开的服务端口。
集成模式
手动模式
确认已为东-西网关分配一个外部 IP 地址。可能会有短暂的延迟,要求您运行/重复此命令,直到您看到所需的结果:
kubectl --context="${CTX_CLUSTER1}" get svc istio-eastwestgateway -n istio-system
预期输出为:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-eastwestgateway LoadBalancer 10.80.6.124 34.75.71.237 ... 51s