Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Sep 18, 2026

Les passerelles Service Mesh (ASM) constituent le point d'entrée du trafic pour vos activités professionnelles. Il est crucial d'améliorer la haute disponibilité des passerelles ASM afin d'éviter les interruptions de service. Cette rubrique explique comment optimiser la haute disponibilité des passerelles ASM.

Prérequis

Améliorer la haute disponibilité des passerelles ASM dans un cluster ACK

Dans un cluster ACK, configurez une politique d'anti-affinité de pod dans le fichier YAML lors de la création d'une passerelle ASM. Cette configuration permet de répartir les pods de la passerelle ASM sur différents nœuds ou zones, ce qui améliore la haute disponibilité de la passerelle.

  • Configurez le paramètre podAntiAffinity de la passerelle ASM pour distribuer les pods de la passerelle sur différents nœuds.

    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 : indique que l'anti-affinité de pod est une politique d'affinité souple. Si aucun nœud ne répond aux exigences configurées, le pod peut tout de même être planifié.

    • matchExpressions : définissez key sur app, operator sur In et values sur istio-ingressgateway-1. Ce paramétrage spécifie qu'un pod ne peut pas être déployé sur le même nœud que les pods portant le libellé app=istio-ingressgateway-1. Autrement dit, chaque nœud ne peut exécuter qu'un seul pod avec le libellé app=istio-ingressgateway-1.

    • topologyKey : spécifie la dimension dans laquelle l'anti-affinité de pod s'applique.

      Dans cet exemple, kubernetes.io/hostname est spécifié, ce qui indique que la politique s'applique au domaine de topologie des nœuds.

  • Configurez le paramètre podAntiAffinity de la passerelle ASM pour distribuer les pods de la passerelle sur différentes zones.

    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 : indique que l'anti-affinité de pod est une politique d'affinité souple. Si aucun nœud ne répond aux exigences configurées, le pod peut tout de même être planifié.

    • matchExpressions : définissez key sur app, operator sur In et values sur istio-ingressgateway-1. Ce paramétrage spécifie qu'un pod ne peut pas être déployé dans la même zone que les pods portant le libellé app=istio-ingressgateway-1. Autrement dit, chaque zone ne peut exécuter qu'un seul pod avec le libellé app=istio-ingressgateway-1.

    • topologyKey : spécifie la dimension dans laquelle l'anti-affinité de pod s'applique.

      Dans cet exemple, topology.kubernetes.io/zone est spécifié, ce qui indique que la politique s'applique au domaine de topologie des zones.

Améliorer la haute disponibilité des passerelles ASM dans un cluster ACK Serverless

Le cluster ACK Serverless ne prend pas en charge les politiques de planification par anti-affinité de pod. Toutefois, vous pouvez créer des pods Elastic Container Instance (ECI) dans un cluster ACK Serverless et les répartir sur différentes zones afin d'améliorer la haute disponibilité de la passerelle ASM.

  1. Configurez plusieurs zones dans le cluster ACK Serverless. Pour plus d'informations, consultez la section Créer des ECI entre les zones.

  2. Utilisez l'annotation de pod dans la passerelle ASM pour associer les pods aux zones.

    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 : identifiants des différents vSwitches dans le Virtual Private Cloud (VPC). Les vSwitches sont utilisés pour associer les pods aux zones.

    • k8s.aliyun.com/eci-schedule-strategy : politique de planification pour les pods ECI. Dans cette rubrique, vous devez utiliser la politique VSwitchRandom, qui planifie aléatoirement les pods ECI sur plusieurs zones.