应用服务网格

容器集群管理

2025-08-13 07:26:02

ASM服务网格支持多集群架构,在开通网格实例时选择的云容器引擎集群我们称为主集群(primary),服务网格的控制面会部署在主集群上,后续可以添加同VPC下的其他云容器引擎集群到网格内,我们称为从集群(remote),整体架构如下图:

添加集群

选择 集群与工作负载 -> 容器集群 菜单,可以看到当前网格内的集群列表

在添加从集群之前,首先确定主集群控制面是否已经完成暴露(可以被从集群连接、使用),选择右侧 查看集群状态选项:

如果在开通网格之后超过半小时控制面服务暴露还未完成,请联系客服解决。

当前已经完成主集群控制面暴露,可以通过左上角的 添加从集群 按钮添加同vpc内的其他集群。


删除集群 

当前只支持删除从集群,选择 集群与工作负载 -> 容器集群菜单,可以看到当前网格内的集群列表,在从集群右侧操作栏可以看到删除选项,点击删除即可。

多集群管理部署示例 

前置条件 

1.已开通服务网格实例,控制面部署在主集群,我们称为C1 

2.在网格中添加另外一个集群,我们称为C2 

部署应用 

1.在集群C1中创建命名空间bookinfo 

kubectl create ns bookinfo 

kubectl label ns bookinfo istio-injection=enabled 

部署bookinfo应用的productpage、details、rating以及reviews(版本v1)服务(yaml参考快速入门)

 部署完成后,C1集群pod如下:

2.在集群C2中创建命名空间bookinfo

kubectl create ns bookinfo 

kubectl label ns bookinfo istio-injection=enabled 

部署reviews服务的v2和v3版本(yaml参考快速入门)

 部署完成后,C2集群pod如下:

3.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: rregistry-vpc-crs-huadong1.cnsp-internal.ctyun.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 

http://productpage:9080/productpage -svo/dev/null

4.查看productpage sidecar日志: 

kubectl logs productpage-v1-7d78657c55-j4t42 -n bookinfo -c istio-proxy | grep reviews

可以看到productpage服务访问到了reviews服务的三个版本的pod

5.配置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版本:


0Pp9kHq9NP9R