Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Improve availability for an ASM ingress gateway

Última atualização: Sep 15, 2026

Os gateways do Service Mesh (ASM) funcionam como ponto de entrada de tráfego para seus negócios. Aumentar a alta disponibilidade desses gateways é fundamental para evitar interrupções de service. Este tópico descreve como melhorar a alta disponibilidade dos gateways do ASM.

Pré-requisitos

Melhorar a alta disponibilidade do gateway do ASM em um cluster ACK

Em um cluster ACK, configure uma política de antiafinidade de pod no arquivo YAML ao criar um gateway do ASM. Essa configuração distribui os pods do gateway por diferentes nós ou zonas e aumenta a alta disponibilidade do gateway do ASM.

  • Configure o parâmetro podAntiAffinity do gateway do ASM para distribuir os pods por diferentes nós.

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: IstioGateway
    metadata:
      name: ingressgateway-1
      namespace: istio-system
    spec:
      clusterIds:
        - "c954ee9df88f64f229591f0ea4c61****"
      cpu:
        targetAverageUtilization: 80
      externalTrafficPolicy: Local
      maxReplicas: 4
      minReplicas: 2
      ports:
      - name: status-port
        port: 15020
        targetPort: 15020
      - name: http2
        port: 80
        targetPort: 80
      - name: https
        port: 443
        targetPort: 80
      - name: tls
        port: 15443
        targetPort: 15443
      replicaCount: 1
      resources:
        limits:
          cpu: '2'
          memory: 2G
        requests:
          cpu: 200m
          memory: 256Mi
      sds:
        enabled: true
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 2000m
            memory: 1024Mi
      serviceType: LoadBalancer
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - istio-ingressgateway-1
              topologyKey: kubernetes.io/hostname
            weight: 100
      rollingMaxSurge: "100%"
      rollingMaxUnavailable: "25%"
    • preferredDuringSchedulingIgnoredDuringExecution: indica que a antiafinidade de pod é uma política de afinidade suave. Caso nenhum nó atenda aos requisitos configurados, o pod ainda poderá ser agendado.

    • matchExpressions: defina key como app, operator como In e values como istio-ingressgateway-1. Essa configuração impede a implantação de um pod no mesmo nó que outros pods com o rótulo app=istio-ingressgateway-1. Assim, cada nó executa apenas um pod com o rótulo app=istio-ingressgateway-1.

    • topologyKey: especifica a dimensão na qual a antiafinidade de pod entra em vigor.

      Neste exemplo, kubernetes.io/hostname está definido, indicando que a política se aplica ao domínio de topologia de nó.

  • Configure o parâmetro podAntiAffinity do gateway do ASM para distribuir os pods por diferentes zonas.

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: IstioGateway
    metadata:
      name: ingressgateway-1
      namespace: istio-system
    spec:
      clusterIds:
        - "c954ee9df88f64f229591f0ea4c61****"
      cpu:
        targetAverageUtilization: 80
      externalTrafficPolicy: Local
      maxReplicas: 4
      minReplicas: 2
      ports:
      - name: status-port
        port: 15020
        targetPort: 15020
      - name: http2
        port: 80
        targetPort: 80
      - name: https
        port: 443
        targetPort: 80
      - name: tls
        port: 15443
        targetPort: 15443
      replicaCount: 1
      resources:
        limits:
          cpu: '2'
          memory: 2G
        requests:
          cpu: 200m
          memory: 256Mi
      sds:
        enabled: true
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 2000m
            memory: 1024Mi
      serviceType: LoadBalancer
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - istio-ingressgateway-1
              topologyKey: topology.kubernetes.io/zone
            weight: 100
      rollingMaxSurge: "100%"
      rollingMaxUnavailable: "25%"
    • preferredDuringSchedulingIgnoredDuringExecution: indica que a antiafinidade de pod é uma política de afinidade suave. Se nenhum nó atender aos requisitos configurados, o pod ainda poderá ser agendado.

    • matchExpressions: defina key como app, operator como In e values como istio-ingressgateway-1. Essa definição impede a implantação de um pod na mesma zona que outros pods com o rótulo app=istio-ingressgateway-1. Assim, cada zona executa somente um pod com o rótulo app=istio-ingressgateway-1.

    • topologyKey: define a dimensão em que a antiafinidade de pod tem efeito.

      Neste exemplo, o valor topology.kubernetes.io/zone foi especificado, indicando que a política atua no domínio de topologia de zona.

Melhorar a alta disponibilidade do gateway do ASM em um cluster ACK Serverless

O cluster ACK Serverless não oferece suporte a políticas de agendamento de antiafinidade de pod. No entanto, é possível crie pods do Elastic Container Instance (ECI) em um cluster ACK Serverless e distribuí-los por diferentes zonas para aumentar a alta disponibilidade do gateway do ASM.

  1. Configure várias zonas no cluster ACK Serverless. Para mais informações, consulte Create ECIs across zones.

  2. Use pod annotation no gateway do ASM para associar os pods às zonas.

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: IstioGateway
    metadata:
      name: ingressgateway
      namespace: istio-system
    spec:
      clusterIds:
        - "c954ee9df88f64f229591f0ea4c61****"
      cpu:
        targetAverageUtilization: 80
      externalTrafficPolicy: Local
      maxReplicas: 4
      minReplicas: 2
      ports:
      - name: status-port
        port: 15020
        targetPort: 15020
      - name: http2
        port: 80
        targetPort: 80
      - name: https
        port: 443
        targetPort: 80
      - name: tls
        port: 15443
        targetPort: 15443
      replicaCount: 1
      resources:
        limits:
          cpu: '2'
          memory: 2G
        requests:
          cpu: 200m
          memory: 256Mi
      sds:
        enabled: true
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 2000m
            memory: 1024Mi
      serviceType: LoadBalancer
      podAnnotations:
        k8s.aliyun.com/eci-vswitch: "vsw-bp1b07j0miob3khtn****,vsw-bp12b85hh323se8ft****"
        k8s.aliyun.com/eci-schedule-strategy: "VSwitchRandom"
      rollingMaxSurge: "100%"
      rollingMaxUnavailable: "25%"
    • k8s.aliyun.com/eci-vswitch: os IDs de diferentes vSwitches na Virtual Private Cloud (VPC). Esses vSwitches associam os pods às zonas.

    • k8s.aliyun.com/eci-schedule-strategy: a política de agendamento para pods ECI. Neste tópico, execute a política VSwitchRandom, que agenda pods ECI aleatoriamente em várias zonas.