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

Alibaba Cloud Service Mesh:ASM ゲートウェイ Pod を専用ノードにデプロイする

最終更新日:Mar 11, 2026

ASM ゲートウェイ Pod に専用ノードを割り当てることで、ゲートウェイトラフィックをアプリケーションワークロードから分離し、ゲートウェイの可用性を向上させます。ノードにラベルを付け、他の Pod を排除するために Taint を適用し、ノードアフィニティと Toleration を使用して ASM ゲートウェイを構成することで、Pod がそのノードのみに配置されるようにします。

仕組み

3 つの Kubernetes スケジューリングメカニズムが連携して、ゲートウェイ Pod を専用ノードに固定します。

メカニズム役割
ノードラベルゲートウェイ用に指定されたノードを識別します
テイント一致する Toleration を持たないすべての Pod を排除し、非ゲートウェイワークロードを専用ノードから遠ざけます
ノードアフィニティ特定のラベルを持つノードにゲートウェイ Pod を引き寄せます
許容設定Taint されたノードにゲートウェイ Pod をスケジュールできるようにします

Taint と Toleration は連携して、システムが不適切なノードに Pod をスケジュールするのを防ぎます。1 つ以上の Taint をノードに適用できます。

  • Pod が特定の Taint を許容しない場合、一致する Taint を持つノードはその Pod を受け入れません。

  • Pod が特定の Taint を許容する場合、その Pod は一致する Taint を持つノードにスケジュールされる可能性がありますが、必須ではありません。

この設定により、非ゲートウェイ Pod は専用ノードから離れ (Taint によって強制されます)、ゲートウェイ Pod はそれらのノードのみに配置されます (ノードアフィニティによって強制されます)。

前提条件

ステップ 1: ターゲットノードのラベル付け

ラベルは、ゲートウェイ Pod 用に予約されているノードを識別します。

  1. クラスター内のすべてのノードをリスト表示します。

       kubectl get nodes

    出力は以下に似ています:

       NAME    STATUS   ROLES    AGE   VERSION
       node1   Ready    <none>   30d   v1.24.6
       node2   Ready    <none>   30d   v1.24.6
       node3   Ready    <none>   30d   v1.24.6
  2. ゲートウェイ Pod をホストするノードにラベルを追加します。

       # Syntax
       kubectl label nodes <node-name> <label-key>=<label-value>
    
       # Example
       kubectl label nodes node1 mykey4pod=asmgateway

    出力は次のようになります。

       node/node1 labeled

ステップ 2: ノードの Taint

Taint は、一致する Toleration を持たない Pod がノードにスケジュールされるのを防ぎます。これにより、アプリケーションワークロードが専用ゲートウェイノードから遠ざけられます。

次のコマンドを実行してノードに Taint を適用します。

kubectl taint nodes node1 mykey=myvalue:NoSchedule

出力は次のようになります。

node/node1 tainted

NoSchedule 効果は、キー mykey、値 myvalue、および効果 NoSchedule に一致する Toleration を持つ Pod のみが node1 にスケジュールできることを意味します。

ステップ 3: ASM ゲートウェイでのノードアフィニティと Toleration の構成

  1. ASM コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、Service Mesh > Mesh 管理 を選択します。

  3. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。

  4. 左側のナビゲーションウィンドウで、[ASM ゲートウェイ] > [Ingress ゲートウェイ] を選択します。

  5. [Ingress ゲートウェイ] ページで、対象のゲートウェイを見つけ、[YAML] をクリックします。

  6. [編集] ダイアログボックスで、次の構成を spec フィールドに追加し、[OK] をクリックします。

    説明

    ヒント: 値に関係なく Taint に一致させるには、operator: "Exists"operator: "Equal" の代わりに使用し、value フィールドを省略します。

    フィールド説明
    nodeAffinityrequiredDuringSchedulingIgnoredDuringExecutionスケジューラは、mykey4pod=asmgateway というラベルが付与されたノード上にゲートウェイ Pod を配置する必要があります
    tolerations.operatorEqualステップ 2 の Taint と一致し、ゲートウェイ Pod がその Taint 付きノードにスケジュールされることを許可します。
       affinity:
         nodeAffinity:
           requiredDuringSchedulingIgnoredDuringExecution:
             nodeSelectorTerms:
             - matchExpressions:
               - key: mykey4pod
                 operator: In
                 values:
                 - asmgateway
       tolerations:
       - key: "mykey"
         operator: "Equal"
         value: "myvalue"
         effect: "NoSchedule"

結果の確認

ゲートウェイ Pod が再起動した後、期待されるノードで実行中であることを確認します。

オプション 1: ACK コンソール

  1. ACK コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[Clusters] をクリックします。

  3. [クラスター] ページで、クラスターの名前をクリックします。

  4. 左側のナビゲーションウィンドウで、[ワークロード][ポッド] を選択します。

  5. [ポッド] ページで、[名前空間] ドロップダウンリストから [istio-system] を選択します。

  6. ゲートウェイ Pod を特定し、[ノード] 列に目的のノード (例: node1) が表示されていることを確認してください。

オプション 2: kubectl

次のコマンドを実行します。

kubectl get pods -n istio-system -o wide | grep <gateway-name>

出力は次のようになります。

ingressgateway-xxxx-yyyy   1/1   実行中   0   5m   10.0.1.12   node1   <none>   <none>

[ノード] 列に node1 が表示されている場合、ゲートウェイ Pod は専用ノードにスケジュールされます。

次のステップ

  • 高可用性のために複数の専用ノードにゲートウェイ Pod をスケジュールするには、追加のノードにラベルを付けて Taint を適用し、それらのラベルを matchExpressions 値リストに追加します。

  • Kubernetes スケジューリングの詳細については、Kubernetes ドキュメントの「Taints and Tolerations」および「Assigning Pods to Nodes」をご参照ください。