Tüm Ürünler
Search
Belge Merkezi

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

Son Güncelleme:Oct 07, 2026

Service Mesh (ASM) ağ geçitleri, iş yüklerinizin trafik giriş noktası olarak hizmet verir. Hizmet kesintilerini önlemek amacıyla ASM ağ geçitlerinin yüksek kullanılabilirliğini artırmak büyük önem taşır. Bu konuda, ASM ağ geçitlerinin yüksek kullanılabilirliğinin nasıl artırılacağı açıklanmaktadır.

Ön koşullar

ACK kümesinde ASM ağ geçidi yüksek kullanılabilirliğini artırma

ACK kümesinde, bir ASM ağ geçidi oluştururken YAML dosyasında pod anti-affinity ilkesi yapılandırın. Bu işlem, ASM ağ geçidine ait podları farklı düğümlere veya alanlara dağıtarak ağ geçidinin yüksek kullanılabilirliğini artırır.

  • ASM ağ geçidine ait podları farklı düğümlere dağıtmak için ASM ağ geçidinin podAntiAffinity parametresini yapılandırın.

    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: Pod anti-affinity değerinin yumuşak bir yakınlık ilkesi olduğunu belirtir. Yapılandırılan gereksinimleri karşılayan bir düğüm bulunmasa bile pod yine de zamanlanabilir.

    • matchExpressions: key değerini app, operator değerini In ve values değerini istio-ingressgateway-1 olarak ayarlayın. Bu ayar, bir podun app=istio-ingressgateway-1 etiketine sahip diğer podlarla aynı düğümde çalıştırılamayacağını belirtir. Diğer bir deyişle, her düğümde yalnızca app=istio-ingressgateway-1 etiketine sahip tek bir pod çalıştırılabilir.

    • topologyKey: Pod anti-affinity özelliğinin geçerli olduğu boyutu belirtir.

      Bu örnekte, kubernetes.io/hostname değeri belirtilmiştir; bu da ilkenin düğüm topoloji alanında etkili olduğunu gösterir.

  • ASM ağ geçidine ait podları farklı alanlara dağıtmak için ASM ağ geçidinin podAntiAffinity parametresini yapılandırın.

    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: Pod anti-affinity değerinin yumuşak bir yakınlık ilkesi olduğunu belirtir. Yapılandırılan gereksinimleri karşılayan bir düğüm bulunmasa bile pod yine de zamanlanabilir.

    • matchExpressions: key değerini app, operator değerini In ve values değerini istio-ingressgateway-1 olarak ayarlayın. Bu ayar, bir podun app=istio-ingressgateway-1 etiketine sahip diğer podlarla aynı alanda çalıştırılamayacağını belirtir. Diğer bir deyişle, her alanda yalnızca app=istio-ingressgateway-1 etiketine sahip tek bir pod çalıştırılabilir.

    • topologyKey: Pod anti-affinity özelliğinin geçerli olduğu boyutu belirtir.

      Bu örnekte, topology.kubernetes.io/zone değeri belirtilmiştir; bu da ilkenin alan topoloji alanında etkili olduğunu gösterir.

ACK Serverless kümesi içinde ASM ağ geçidi yüksek kullanılabilirliğini artırma

ACK Serverless kümesi pod anti-affinity zamanlama ilkelerini desteklemez. Ancak, ACK Serverless kümesi içinde Elastic Container Instance (ECI) podları oluşturularak bunlar farklı alanlara dağıtılabilir ve böylece ASM ağ geçidinin yüksek kullanılabilirliği artırılabilir.

  1. ACK Serverless kümesi içinde birden çok alan yapılandırın. Daha fazla bilgi için bkz. Alanlar arasında ECI oluşturma.

  2. Podları alanlarla ilişkilendirmek için ASM ağ geçidinde pod annotation kullanın.

    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: Sanal özel cloud (VPC) içindeki farklı vSwitch'lerin kimlikleri. Bu vSwitch'ler, podları alanlarla ilişkilendirmek için kullanılır.

    • k8s.aliyun.com/eci-schedule-strategy: ECI podları için zamanlama ilkesi. Bu konuda, ECI podlarını rastgele olarak birden çok alana zamanlayan VSwitchRandom ilkesi kullanılmalıdır.