概述
應用服務網格支持多集群架構,在開通網格實例時選擇的云容器引擎集群我們稱為主集群(primary),服務網格的控制面會部署在主集群上,后續可以添加同VPC下的其他云容器引擎集群到網格內,我們稱為從集群(remote),整體架構如下圖:
添加集群
選擇集群與工作負載 -> 容器集群菜單,可以看到當前網格內的集群列表;
在添加從集群之前,首先確定主集群控制面是否已經完成暴露(可以被從集群連接、使用),選擇右側查看集群狀態選項,如果在開通網格之后超過半小時控制面服務暴露還未完成,請聯系客服解決。
當前已經完成主集群控制面暴露,可以通過左上角的 添加從集群按鈕添加同vpc內的其他集群。
刪除集群
當前只支持刪除從集群,選擇 集群與工作負載 -> 容器集群菜單,可以看到當前網格內的集群列表,在從集群右側操作欄可以看到刪除選項,點擊刪除即可。
多集群管理部署示例
前置條件
- 已開通服務網格實例,控制面部署在主集群,我們稱為C1。
- 在網格中添加另外一個集群,我們稱為C2。
部署應用
在集群C1中創建命名空間bookinfo
kubectl create ns bookinfo;
kubectl label nsbookinfo istio-injection=enabled;
部署bookinfo應用的productpage、details、rating以及reviews(版本v1)服務(yaml文件參考快速入門-部署bookinfo應用到CSM實例)。
部署完成后,C1集群pod如下:

在集群C2中創建命名空間bookinfo
kubectl create ns bookinfo;
kubectl label ns bookinfo istio-injection=enabled;
部署reviews服務的v2和v3版本(yaml文件參考快速入門-部署bookinfo應用到CSM實例)。
部署完成后,C2集群pod如下:

在C1中部署sleep應用,驗證訪問
apiVersion: v1
kind: ServiceAccount
metadata:
name: sleep
---
apiVersion: v1
kind: Service
metadata:
name: sleep
labels:
app: sleep
service: sleep
spec:
ports:
- port: 80
name: http
selector:
app: sleep
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: sleep
spec:
replicas: 1
selector:
matchLabels:
app: sleep
template:
metadata:
labels:
app: sleep
spec:
terminationGracePeriodSeconds: 0
serviceAccountName: sleep
containers:
- name: sleep
image: registry-vpc-crs-huadong1.cnsp-internal.daliqc.cn/library/curl
command: ["/bin/sleep", "infinity"]
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /etc/sleep/tls
name: secret-volume
volumes:
- name: secret-volume
secret:
secretName: sleep-secret
optional: true
通過sleep應用多次訪問productpage服務:
kubectl exec -it -n bookinfo sleep-7fb478946b-44t5x -c istio-proxy -- curl
//productpage:9080/productpage -svo/dev/null
查看productpage sidecar日志:
kubectl logs productpage-v1-7d78657c55-j4t42 -n bookinfo -c istio-proxy | grep reviews

可以看到productpage服務訪問到了reviews服務的三個版本的pod。
配置DestinationRule 、VirtualService資源,限制只能訪問reviews的v3版本
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
- name: v3
labels:
version: v3
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v3
weight: 100
再次多次訪問productpage服務,查看productpage sidecar日志如下,可以看到總是訪問到reviews的v3版本:
