All Products
Search
Document Center

Alibaba Cloud Service Mesh:Tingkatkan ketersediaan gerbang masuk ASM

Last Updated:Sep 16, 2026

Gerbang Service Mesh (ASM) berfungsi sebagai titik masuk lalu lintas bisnis Anda. Meningkatkan ketersediaan tinggi gerbang ASM penting untuk menghindari gangguan layanan. Topik ini menjelaskan cara meningkatkan ketersediaan tinggi gerbang ASM.

Prasyarat

Tingkatkan ketersediaan tinggi gerbang ASM di kluster ACK

Di kluster ACK, konfigurasikan kebijakan pod anti-affinity dalam file YAML saat membuat gerbang ASM. Hal ini mendistribusikan Pod gerbang ASM ke node atau zona yang berbeda, sehingga meningkatkan ketersediaan tinggi gerbang ASM.

  • Konfigurasikan parameter podAntiAffinity gerbang ASM untuk mendistribusikan Pod gerbang ASM ke node yang berbeda.

    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: menunjukkan bahwa pod anti-affinity merupakan kebijakan afinitas lunak. Jika tidak ada node yang memenuhi persyaratan yang dikonfigurasi, Pod tetap dapat dijadwalkan.

    • matchExpressions: atur key menjadi app, operator menjadi In, dan values menjadi istio-ingressgateway-1. Pengaturan ini menentukan bahwa Pod tidak dapat dideploy pada node yang sama dengan Pod yang memiliki label app=istio-ingressgateway-1. Dengan kata lain, setiap node hanya dapat menjalankan satu Pod dengan label app=istio-ingressgateway-1.

    • topologyKey: menentukan dimensi tempat pod anti-affinity berlaku.

      Pada contoh ini, kubernetes.io/hostname ditentukan, yang berarti kebijakan tersebut berlaku dalam domain topologi node.

  • Konfigurasikan parameter podAntiAffinity gerbang ASM untuk mendistribusikan Pod gerbang ASM ke zona yang berbeda.

    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: menunjukkan bahwa pod anti-affinity merupakan kebijakan afinitas lunak. Jika tidak ada node yang memenuhi persyaratan yang dikonfigurasi, Pod tetap dapat dijadwalkan.

    • matchExpressions: atur key menjadi app, operator menjadi In, dan values menjadi istio-ingressgateway-1. Pengaturan ini menentukan bahwa Pod tidak dapat dideploy di zona yang sama dengan Pod yang memiliki label app=istio-ingressgateway-1. Dengan kata lain, setiap zona hanya dapat menjalankan satu Pod dengan label app=istio-ingressgateway-1.

    • topologyKey: menentukan dimensi tempat pod anti-affinity berlaku.

      Pada contoh ini, topology.kubernetes.io/zone ditentukan, yang berarti kebijakan tersebut berlaku dalam domain topologi zona.

Tingkatkan ketersediaan tinggi gerbang ASM di kluster ACK Serverless

Kluster ACK Serverless tidak mendukung kebijakan penjadwalan pod anti-affinity. Namun, Pod Elastic Container Instance (ECI) dapat dibuat di kluster ACK Serverless dan didistribusikan ke zona yang berbeda untuk meningkatkan ketersediaan tinggi gerbang ASM.

  1. Konfigurasikan beberapa zona di kluster ACK Serverless. Untuk informasi selengkapnya, lihat Create ECIs across zones.

  2. Gunakan pod annotation pada gerbang ASM untuk mengaitkan Pod dengan zona.

    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: ID vSwitch yang berbeda di virtual private cloud (VPC). vSwitch digunakan untuk mengaitkan Pod dengan zona.

    • k8s.aliyun.com/eci-schedule-strategy: kebijakan penjadwalan untuk Pod ECI. Pada topik ini, kebijakan VSwitchRandom harus digunakan, yang menjadwalkan Pod ECI secara acak ke beberapa zona.