ノードオートスケーリング機能を使用して、現在のクラスター内のリソースがポッドスケジューリングを実行できない場合に、Container Service for Kubernetes (ACK) を有効にしてノードを自動的にスケーリングできます。 ノードオートスケーリング機能は、小規模なスケーリングアクティビティや、毎回1つのスケーリングアクティビティしか必要としないワークロードに適しています。 たとえば、この機能は、自動スケーリングが有効なノードプールが20個未満のクラスター、または自動スケーリングが有効なノードプールが100個未満のクラスターに適しています。
あなたが始める前に
ノードの自動スケーリング機能をより適切に使用するには、[ノードのスケーリングの概要] トピックを読み、次の項目に注意することをお勧めします。
ノードの自動スケーリングの仕組みとその機能
ノード自動スケーリングのシナリオの使用
ノード自動スケーリングの使用に関する注意事項
前提条件
Container Service for Kubernetes (ACK) マネージドクラスターまたはACK専用クラスターが作成されます。 詳細については、「ACK管理クラスターの作成」および「ACK専用クラスターの作成」をご参照ください。
Elastic Scaling Service (ESS) が有効化されました。
手順1: ノードの自動スケーリングを有効にする
ノードオートスケーリングを使用する前に、ACKコンソールのノードプールページでこの機能を有効にして設定する必要があります。 この機能を設定するときは、[Node Scaling Method] を [Auto Scaling] に設定します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
ノードプール ページで、ノードスケーリング の横にある [有効化] をクリックします。
この機能を初めて使用する場合は、画面の指示に従ってAuto Scalingを有効にし、承認を完了します。 すでに承認を完了している場合は、この手順をスキップします。
ACKマネージドクラスターの場合、AliyunCSManagedAutoScalerRoleを使用してクラウドリソースにアクセスするようにACKを承認します。
ACK専用クラスターの場合、スケーリング管理にKubernetes WorkerRoleとAliyunCSManagedAutoScalerRolePolicyを使用するようにACKを承認します。 次の図は、Node Scalingを有効にしたときに承認できるコンソールページを示しています。
[ノードスケーリング設定] パネルで、[ノードスケーリング方法] を [自動スケーリング] に設定し、スケーリングパラメーターを設定して、[OK] をクリックします。
パラメーター
説明
ノードPoolsScaleアウトポリシー
ランダムポリシー: 複数のスケーラブルなノードプールが存在する場合、ノードプールをランダムにスケールアウトします。
デフォルトポリシー: 複数のスケーラブルなノードプールが存在する場合、リソースの浪費が最も少ないノードプールをスケールアウトします。
優先度ベースのポリシー: 複数のスケーラブルなノードプールが存在する場合、スケールアウトの優先度に基づいてノードプールをスケールアウトします。
ノードプールのスケールアウト優先度は、ノードプールの作成後にのみ指定できます。
スキャン間隔
スケーリングのためにクラスターを評価する間隔を指定します。 デフォルト値: 60 秒。
オートスケーラは、実際のスケジューリングステータスに基づいてスケールアウトアクティビティをトリガーします。 スケールイン条件を設定するだけで済みます。
重要Elastic Compute Service (ECS) ノード: オートスケーラーは、[スケールインしきい値] 、[スケールインの下限]: 、および [クールダウン] の条件が満たされている場合にのみ、スケールインアクティビティを実行します。
GPU高速化ノード: オートスケーラーは、GPUスケールインしきい値、[スケールインの下限]: 、および [クールダウン] の条件が満たされている場合にのみスケールインアクティビティを実行します。
スケールインを許可
スケールイン活動を許可するかどうかを指定します。 スケールイン構成は、このスイッチがオフになっても有効になりません。 作業は慎重に行ってください。
スケールインしきい値
ノードオートスケーリングが有効になっているノードプール内のノードのリソース容量に対するノードのリソース要求の比率を指定します。
ノードのCPUおよびメモリ使用率が [スケールインしきい値] より低い場合にのみ、スケールインアクティビティが実行されます。
GPUスケールインしきい値
GPU高速化ノードのスケールインしきい値。
ノードのCPU、メモリ、およびGPU使用率が [スケールインしきい値] より低い場合にのみ、スケールインアクティビティが実行されます。
スケールインの遅延
スケールインしきい値に達した時刻と、スケールインアクティビティ (ポッドの数を減らす) が開始される時刻の間隔。 単位は分です。 デフォルト値は 10 です。
重要オートスケーラーは、スケールインしきい値が設定され、[スケールインの下限] 条件が満たされている場合にのみ、スケールインアクティビティを実行します。
クールダウン
オートスケーラがスケールアウトアクティビティを実行した後、オートスケーラは、スケールインアクティビティを実行できるようになる前に、クールダウン期間を待つ。
オートスケーラは、クールダウン期間内にスケールインアクティビティを実行できませんが、ノードがスケールイン条件を満たしているかどうかを確認できます。 クールダウン期間が終了した後、ノードがスケールイン条件を満たし、[スケールインの遅延] パラメーターで指定された待機期間が終了すると、ノードは削除されます。 たとえば、Cooldownパラメーターは10分に設定され、Defer Scale-in Forパラメーターは5分に設定されます。 オートスケーラは、スケールアウト活動を実行した後、10分のクールダウン期間内にスケールイン活動を実行できません。 しかしながら、オートスケーラは、ノードがクールダウン期間内にスケールイン条件を満たすかどうかを依然としてチェックすることができる。 クールダウン期間が終了すると、スケールイン条件を満たすノードは5分後に削除されます。
手順2: 自動スケーリングが有効になっているノードプールを設定する
ノード自動スケーリング機能は、自動スケーリングが有効になっているノードプール内のノードのみをスケーリングします。 したがって、ノードの自動スケーリングを設定した後、自動スケーリングが有効になっているノードプールを少なくとも1つ設定する必要があります。 自動スケーリングが有効になっているノードプールを作成したり、既存のノードプールの自動スケーリングを有効にしたりできます。
次の表に、主要なパラメーターを示します。 次のセクションの「ノードプール」という用語は、自動スケーリングが有効になっているノードプールを指します。 詳細については、「ノードプールの作成」および「ノードプールの変更」をご参照ください。
パラメーター | 説明 |
Auto Scaling | 自動スケーリングを有効にするかどうかを指定します。 この機能は、リソース需要とスケーリングポリシーに基づいたコスト効率の高いコンピューティングリソースのスケーリングを提供します。 詳細については、「自動スケーリングの概要」をご参照ください。 この機能を有効にする前に、ノードプールのノードオートスケーリングを有効にする必要があります。 詳細については、「手順1: ノードの自動スケーリングの有効化」をご参照ください。 |
インスタンス関連のパラメーター | インスタンスタイプまたは属性に基づいて、ワーカーノードプールで使用されるECSインスタンスを選択します。 vCPU、メモリ、インスタンスファミリー、アーキテクチャなどの属性でECSインスタンスをフィルタリングできます。 ノードプールをスケールアウトすると、選択したインスタンスタイプのECSインスタンスが作成されます。 ノードプールのスケーリングポリシーは、スケールアウトアクティビティ中に新しいノードを作成するために使用されるインスタンスタイプを決定します。 複数のインスタンスタイプを選択して、ノードプールのスケールアウト操作の成功率を向上させます。 ノードプール内のノードのインスタンスタイプ。 インスタンスタイプを1つだけ選択した場合、ECSインスタンスストックの変動がスケーリング成功率に影響します。 スケーリングの成功率を上げるために、複数のインスタンスタイプを選択することを推奨します。 GPU高速化インスタンスのみを選択した場合は、オンデマンドで [GPU共有の有効化] を選択できます。 詳細については、「cGPUの概要」をご参照ください。 |
[インスタンス数] | クラスター内の既存のインスタンスを除く、ノードプール内のインスタンスの数。 デフォルトでは、インスタンスの最小数は 0 です。 1つ以上のインスタンスを指定した場合、システムはインスタンスをノードプールに追加します。 スケールアウトアクティビティがトリガーされると、ノードプール内のインスタンスが関連付けられたクラスターに追加されます。 |
オペレーティングシステム | 自動スケーリングを有効にすると、Alibaba Cloud Linux、Windows、またはWindows Coreに基づいてイメージを選択できます。 WindowsまたはWindows Coreに基づいてイメージを選択すると、 |
ノードラベル | ノードラベルは、スケールアウトアクティビティによってクラスターに追加されたノードに自動的に追加されます。 重要 自動スケーリングでは、ノードラベルとテイントがノードプールタグにマップされた後にのみ、ノードラベルとテイントを認識できます。 ノードプールは、限られた数のタグしか持つことができない。 したがって、自動スケーリングが有効になっているノードプールのECSタグ、テイント、およびノードラベルの総数を12未満に制限する必要があります。 |
[スケーリングポリシー] |
|
スケーリングモード | [標準] または [迅速] を選択できます。
|
テインツ | ノードにテイントを追加すると、ACKはノードへのポッドをスケジュールしなくなります。 |
自動スケーリングが有効になっているノードプールを作成したら、手順1: ノード自動スケーリングの有効化を参照し、必要に応じて優先度ベースのポリシーを選択します。 優先度の有効な値は、1から100までの整数である。
ステップ3: (オプション) ノードの自動スケーリングの確認
上記の設定が完了したら、ノードオートスケーリング機能を使用できます。 ノードプールには、自動スケーリングが有効で、cluster-autoscalerがクラスターにインストールされていることが表示されます。
ノードプールの自動スケーリングが有効になっている
[ノードプール] ページには、自動スケーリングが有効なノードプールが表示されます。
cluster-autoscalerがインストールされています
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
kube-system名前空間を選択します。 cluster-autoscalerコンポーネントが表示されます。
よくある質問
カテゴリ | サブカテゴリ | 問題 |
ノード自動スケーリングのスケーリング動作 | ||
カスタムスケーリングの動作 | ||