仮想ノードとエラスティックコンテナインスタンスに基づいて、サーバーレス サービスメッシュ(ASM)ゲートウェイが提供されます。 エラスティックリソースが必要で、ノードのメンテナンスが不要なサービスシナリオに適用できます。 このトピックでは、サーバーレス ASM ゲートウェイをデプロイする方法について説明します。
前提条件
コンテナサービス Kubernetes 版(ACK)クラスター(ACK 標準クラスター、ACK Pro クラスター、または ACK 専用クラスター)が ASM インスタンスに追加されています。 詳細については、ASM インスタンスへのクラスターの追加をご参照ください。
説明ASM コンソールでサーバーレス Kubernetes(ASK)クラスターに ASM ゲートウェイを作成する場合、ポッドはエラスティックコンテナインスタンス上で実行されるため、このトピックで説明されている操作を実行する必要はありません。 ゲートウェイの作成方法の詳細については、イングレスゲートウェイサービスの作成をご参照ください。
ack-virtual-node コンポーネントがデプロイされています。 詳細については、仮想ノードコントローラーをデプロイし、それを使用してエラスティックコンテナインスタンスベースのポッドを作成するをご参照ください。
用語
用語 | 説明 |
Elastic Container Instance | Elastic Container Instance は、サーバーレスのエラスティックコンピューティングサービスです。 Alibaba Cloud が提供するこのコンテナサービスは、お客様を O&M から解放し、コンテナランタイム環境に強力な分離と迅速な起動を提供します。 Elastic Container Instance を使用すると、基盤となる Elastic Compute Service(ECS)サーバーを購入および管理したり、基盤となるインフラストラクチャを維持したりする必要なく、コンテナアプリケーションに集中できます。 ビジネス要件に基づいてエラスティックコンテナインスタンスを作成し、コンテナ用に構成したリソースに対してのみ、数量と秒数に基づいて料金を支払うことができます。 詳細については、Elastic Container Instance とはおよび課金概要をご参照ください。 |
仮想ノード | 仮想ノードは、コンピューティング負荷の変動が顕著なシナリオにおいて、コンピューティングコストの大幅な削減とエラスティックコンピューティング効率の向上に役立ちます。 |
Taint | Taint を使用すると、ノードは一連のポッドを拒否できます。 デフォルトでは、ACK クラスター内のすべての仮想ノードに |
Toleration | Toleration はポッドに適用され、ポッドを一致する Taint を持つノードにスケジュールできるようにします。 ACK クラスター内のポッドがエラスティックコンテナインスタンスを使用できるようにするには、次の
説明 Taint と Toleration は連携して、システムがポッドを不適切なノードにスケジュールするのを防ぎます。 1 つ以上の Taint をノードに適用できます。
詳細については、Taint と Toleration をご参照ください。 |
ノードアフィニティ | ノードアフィニティは、ポッドを一連のノードに引き寄せます。 ノードアフィニティルールは必須または優先にすることができます。 ソフトルールまたは優先ルールが満たされない場合、ポッドは他のノードにスケジュールされます。 |
ステップ 1:目的のノードにラベルを追加する
次のコマンドを実行して、特定のクラスター内のノードの名前を取得します。
kubectl get nodes
次のコマンドを実行して、目的のノードにラベルを追加します。
# コマンド形式 kubectl label nodes <node-name> <label-key>=<label-value> # サンプルコマンド kubectl label nodes node1 mykey4pod=asmgateway
ステップ 2:ノードに Taint を追加する
次のコマンドを実行して、ノードに Taint を追加します。
kubectl taint nodes node1 mykey=myvalue:NoSchedule
このコマンドは、node1
に Taint を追加します。 キーは mykey
、値は myvalue
、効果は NoSchedule
です。 これにより、Taint を許容するポッドのみが node1
にスケジュールできます。
ステップ 3:ASM ゲートウェイのノードアフィニティと Toleration を設定する
ASM ゲートウェイの nodeAffinity
関連のパラメーターを構成して、ASM ゲートウェイのポッドが対応するノードにスケジュールされるようにします。 ステップ 2 で作成された Taint と一致するように tolerations
関連のパラメーターを構成して、ASM ゲートウェイのポッドを node1 にスケジュールできるようにします。
ASM コンソール にログインします。 左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。 左側のナビゲーションペインで、 を選択します。
[イングレスゲートウェイ] ページで、設定するゲートウェイを見つけて、右側の [YAML] をクリックします。
[編集] ダイアログボックスで、次のコンテンツを
spec
フィールドに追加し、[OK] をクリックします。affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: type operator: In values: - virtual-kubelet weight: 20 - preference: matchExpressions: - key: mykey4pod operator: In values: - asmgateway weight: 80 requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: mykey4pod operator: In values: - asmgateway - matchExpressions: - key: type operator: In values: - virtual-kubelet tolerations: - effect: NoSchedule key: virtual-kubelet.io/provider operator: Equal value: alibabacloud - effect: NoSchedule key: mykey operator: Equal value: myvalue
次の表は、主要なパラメーターについて説明しています。 パラメーターの詳細については、ノードへのポッドの割り当て をご参照ください。
パラメーター
説明
preferredDuringSchedulingIgnoredDuringExecution
スケジューラーは、ルールを満たすノードを見つけようとします。 一致するノードが見つからない場合でも、スケジューラーはポッドをスケジュールします。 このパラメーターは、2 つの
matchExpressions
フィールドに関連付けられています。weight
フィールドの値は相対値であり、値が大きい構成が優先されます。weight
が20
の構成を使用すると、ポッドはエラスティックコンテナインスタンスを使用するようにスケジュールされます。weight
が80
の構成を使用すると、ポッドは指定されたラベルを持つ ECS ノードにスケジュールされます。requiredDuringSchedulingIgnoredDuringExecution
スケジューラーは、ルールが満たされた場合にのみポッドをスケジュールします。 このパラメーターは、2 つの
matchExpressions
フィールドに関連付けられています。 1 つは、ポッドが指定されたラベルを持つ ECS ノードにスケジュールされることを示し、もう 1 つは、ポッドがエラスティックコンテナインスタンスを使用するようにスケジュールされることを示します。tolerations
上記の例の構成は、ポッドが
virtual-kubelet.io/provider=alibabacloud:NoSchedule
Taint を許容し、エラスティックコンテナインスタンスを使用できることを示しています。ゲートウェイポッドのノードが期待どおりかどうかを確認します。
ACK コンソール にログインします。 左側のナビゲーションペインで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。 左側のペインで、 を選択します。
[ポッド] ページの上部にある [名前空間] ドロップダウンリストから istio-system を選択し、ゲートウェイポッドのノードを確認します。
ゲートウェイポッドのノードが期待どおりであれば、ASM ゲートウェイに目的のノードアフィニティと Toleration が設定されています。