为了演示跨集群访问,在第一个Kubernetes集群cluster1中部署sleep应用服务和版本v1的helloworld服务,在第二个集群cluster2中部署版本v2的helloworld服务,然后验证sleep应用是否可以调用本地或者远程集群的helloworld服务。
1)部署sleep和版本v1的helloworld服务到第一个集群cluster1中,执行如下命令:
kubectl create namespace app1
kubectl label namespace app1 istio-injection=enabled
kubectl apply -n app1 -f samples/sleep/sleep.yaml
kubectl apply -n app1 -f samples/helloworld/service.yaml
kubectl apply -n app1 -f samples/helloworld/helloworld.yaml -l version=v1
export SLEEP_POD=$(kubectl get -n app1 pod -l app=sleep -o jsonpath={.items..metadata.name})
2)部署版本v2的helloworld服务到第二个集群cluster2中,执行如下命令:
kubectl create namespace app1 kubectl label namespace app1 istio-injection=enabled kubectl apply -n app1 -f samples/helloworld/service.yaml kubectl apply -n app1 -f samples/helloworld/helloworld.yaml -l version=v2
3)登录到命名空间istio-system下的istio-pilot容器中,运行curl localhost:8080/v1/registration|grep helloworld-A 11-B 2命令,如果得到如下类似的结果就说明版本v1与v2的helloworld服务都已经注册到Istio控制平面中了:
4)验证在集群cluster1中的sleep服务是否可以正常调用本地或者远程集群的helloworld服务,在集群cluster1下执行如下命令:
kubectl exec -it -n app1 $SLEEP_POD sh

登录到容器中,运行curl helloworld.app1:5000/hello。
如果设置正确,则在返回的调用结果中可以看到两个版本的helloworld服务,同时可以通过查看sleep容器组中的istio-proxy容器日志来验证访问的端点IP地址,返回结果如下所示:
