すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Service Mesh:ASM インスタンスのイングレスゲートウェイサービスの可用性を向上させる

最終更新日:Mar 21, 2025

Service Mesh (ASM) インスタンスのイングレスゲートウェイは、ビジネスのトラフィックエントリとして機能します。ビジネスの可用性を維持するために、イングレスゲートウェイは可用性が高くなければなりません。このトピックでは、ASM インスタンスのイングレスゲートウェイサービスの可用性を向上させる方法について説明します。

前提条件

ACK クラスタにデプロイされたイングレスゲートウェイサービスの可用性を向上させる

YAML ファイルを使用して、ASM インスタンスのイングレスゲートウェイを作成および構成できます。イングレスゲートウェイを作成して ACK クラスタにデプロイする際に、イングレスゲートウェイの YAML ファイルで Pod アンチアフィニティポリシーを構成して、イングレスゲートウェイの Pod を異なるノードまたはゾーンに割り当てることができます。これにより、イングレスゲートウェイの可用性が向上します。

  • podAntiAffinity パラメータを設定して、イングレスゲートウェイの Pod を異なるノードに割り当てます。

    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 アフィニティを有効にします。これは、Pod が指定された要件を満たしていなくてもスケジュールできることを指定します。

    • matchExpressions: Pod の割り当てに使用されるポリシー。key パラメータを app に、operator パラメータを In に、values パラメータを istio-ingressgateway-1 に設定します。これは、app=istio-ingressgateway-1 というラベルが付いた Pod がデプロイされているのと同じノードに、イングレスゲートウェイの Pod をデプロイできないことを指定します。その結果、各ノードには app=istio-ingressgateway-1 というラベルが付いた Pod が 1 つだけ含まれるようになります。

    • topologyKey: Pod アンチアフィニティポリシーが有効になるディメンション。

      この例では、値は kubernetes.io/hostname に設定されており、これは Pod アンチアフィニティポリシーがノードで有効になることを示します。

  • podAntiAffinity パラメータを設定して、イングレスゲートウェイの Pod を異なるゾーンに割り当てます。

    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 アフィニティを有効にします。これは、Pod が指定された要件を満たしていなくてもスケジュールできることを指定します。

    • matchExpressions: Pod の割り当てに使用されるポリシー。key パラメータを app に、operator パラメータを In に、values パラメータを istio-ingressgateway-1 に設定します。これは、app=istio-ingressgateway-1 というラベルが付いた Pod がデプロイされているのと同じゾーンに、イングレスゲートウェイの Pod をデプロイできないことを指定します。その結果、各ゾーンには app=istio-ingressgateway-1 というラベルが付いた Pod が 1 つだけ含まれるようになります。

    • topologyKey: Pod アンチアフィニティポリシーが有効になるディメンション。

      この例では、このパラメータは topology.kubernetes.io/zone に設定されており、これは Pod アンチアフィニティポリシーがゾーンで有効になることを示します。

ACK Serverless クラスタにデプロイされたイングレスゲートウェイサービスの可用性を向上させる

サーバーレス Kubernetes クラスタは、Pod アンチアフィニティポリシーをサポートしていません。ACK Serverless クラスタにデプロイされたイングレスゲートウェイサービスの可用性を向上させるには、クラスタ内に Elastic Container Instance (ECI) Pod を作成し、Pod を異なるゾーンに割り当てることができます。

  1. ACK Serverless クラスタで複数のゾーンを構成します。詳細については、「ゾーンをまたいで ECI を作成する」をご参照ください。

  2. podAnnotations パラメーターを ACK Serverless クラスタにデプロイされたイングレスゲートウェイに設定して、ゾーンをこのイングレスゲートウェイに関連付けます。

    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: 関連付けるゾーンの仮想プライベートクラウド (VPC) に属する vSwitch の ID。

    • k8s.aliyun.com/eci-schedule-strategy: ECI Pod のスケジューリングポリシー。この例では、値は vSwitchRandom に設定されており、これは ECI Pod がランダムモードでゾーンに割り当てられることを示します。