クラスターの容量計画がアプリケーション Pod のスケジューリング要件を満たせない場合、ノードの自動スケーリングを使用してノードを自動的にスケーリングします。ノードの自動スケーリングは、小規模なスケーリング (20 未満の伸縮性ノードプール、または伸縮性ノードプールあたり 100 未満のノードなど)、安定したトラフィック変動、予測可能または定期的なリソース需要、および単一バッチのリソーススケーリングで満たせるビジネスニーズのシナリオに最適です。
事前準備
ノードの自動スケーリングを効果的に使用するには、まず「ノードスケーリング」をご参照いただき、以下を理解してください。
ノードの自動スケーリング:仕組みと特徴
ノードの自動スケーリングがサポートするビジネスシナリオ
ノードの自動スケーリングを使用する前の重要な考慮事項
スケールイン時、サブスクリプションインスタンスはクラスターから削除されますが、リリースされません。追加コストを回避するため、この機能を有効にする際は従量課金インスタンスを使用してください。
重要な注意事項
開始する前に、Auto Scaling (ESS) を有効にしていることを確認してください。
ノードスケーリングのクォータと制限については、「重要な注意事項」をご参照ください。
ノードの自動スケーリングには、特定のスケジューリングポリシーで既知の制限事項があり、スケーリング結果が期待と異なる場合があります。ワークロードまたはコンポーネントがサポートされていないスケジューリングポリシーを使用している場合は、次のように調整してください。
ソリューション 1:インスタントノード弾力性に切り替えます。
ソリューション 2:ノードスケーリングが無効になっているノードプールに、影響を受けるワークロードまたはコンポーネントをデプロイします。
例えば、ack-node-local-dns-admission-controller コンポーネントをノードスケーリングが無効になっているノードプールにデプロイし、コンポーネント構成で次のノードアフィニティ要件を宣言します。
nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: "k8s.aliyun.com" operator: "NotIn" values: ["true"]
cluster-autoscaler コンポーネントは、更新またはデプロイメント中にノードリソースを必要とします。リソースが不足している場合、更新またはデプロイメントが失敗し、スケーリングエラーが発生する可能性があります。十分なノードリソースを確保してください。
この機能には、次のステップが含まれます。
ステップ 1: クラスターのノードの自動スケーリングの有効化:ノードプールに設定された自動スケーリングポリシーは、クラスターレベルでノードの自動スケーリング機能を有効にした後にのみ有効になります。
ステップ 2: 伸縮性ノードプールの構成:ノードの自動スケーリングは、Auto Scaling 用に構成されたノードプールにのみ適用されます。そのため、ターゲットノードプールのスケーリングモードを [自動] に設定してください。
ステップ 1: クラスターのノードの自動スケーリングの有効化
Container Service 管理コンソールにログインします。Container Service 管理コンソール 。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
[クラスターリスト] ページで、クラスターの名前をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
[ノードプール] ページで、[ノードスケーリング] の横にある [設定] をクリックします。

ノードの自動スケーリングを初めて使用する場合は、画面の指示に従って ESS を有効にし、権限付与を完了してください。ESS がすでに有効で権限付与が完了している場合は、このステップをスキップしてください。
[ノードスケーリング設定] ページで、[ノードスケーリング方法] を [Auto Scaling] に設定します。スケーリング設定を構成し、[OK] をクリックします。
ノードスケーリング方法は後で変更できます。切り替えるには、インスタントノード弾力性を選択し、画面の指示を注意深く読み、それに従ってください。
設定
説明
ノードプール スケールアウト 順序ポリシー
ランダムポリシー: 複数のノードプールがスケールアウトの対象となる場合、ランダムに 1 つを選択します。
デフォルトポリシー: 複数のノードプールがスケールアウトの対象となる場合、リソースの無駄が最も少ないノードプールを選択します。
優先度ポリシー: 複数のノードプールがスケールアウトの対象となる場合、最も優先度の高いノードプールを選択します。
ノードプールの優先順位は、[ノードプール スケールアウト優先順位] パラメーターを使用して設定します。
ノードプール スケールアウト優先度
ノードプールのスケールアウト優先度を設定します。この設定は、[ノードプール スケールアウト順序ポリシー] が [優先度ポリシー] に設定されている場合にのみ有効になります。
有効な値:1 から 100 までの整数。数値が大きいほど優先度が高くなります。
[追加] をパラメーターの右側でクリックします。自動スケーリングが有効になっているノードプールを選択し、優先度を割り当てます。
Auto Scaling が有効になっているノードプールが利用できない場合は、この設定をスキップしてください。優先度は「ステップ 2: 伸縮性ノードプールの構成」の完了後に設定してください。
スケーリング感度
スケーリングが必要かどうかをシステムがチェックする頻度を調整します。デフォルト値:60 秒。
スケーリング中、弾力性コンポーネントはスケジューリングステータスに基づいて自動的にスケールアウトをトリガーします。
重要ECSノード:弾力性コンポーネントは、以下の3つの条件がすべて満たされた場合にのみ、ノードをスケールインできます。[スケールインしきい値]、[スケールイン開始遅延]、および[サイレント時間]。
GPU ノード: 弾力性コンポーネントは、次の3つの条件がすべて満たされた場合にのみ、GPU ノードをスケールインできます。GPU スケールインしきい値、スケールイン トリガー遅延、およびサイレント時間。
スケールインを許可
ノードのスケールインを許可するかどうか。無効にすると、スケールイン設定は有効になりません。慎重に設定してください。
スケールインしきい値
ノードの自動スケーリングが有効になっているノードプールの場合、これはリクエストされたリソース (Request) とノードあたりの合計リソース容量の比率です。
ノードは、この比率がしきい値を下回った場合、つまりノードの CPU およびメモリ使用量がともに [スケールインのしきい値] を下回った場合にのみ、スケールインできます。
GPU スケールインしきい値
GPU インスタンスのスケールインしきい値。
GPU ノードは、ノード上の CPU、メモリ、GPU の使用率がすべて [GPU スケールインのしきい値] を下回った場合にのみ、スケールインの対象となります。
スケールインのトリガー遅延
スケールインの必要性を検出してから実際にスケールインを実行するまでの時間。単位:分。デフォルト値:10 分。
重要エラスティシティ コンポーネントは、[スケールインしきい値]が満たされ、かつ[スケールイン トリガー遅延]が経過した後にのみ、ノードをスケールインする場合があります。
サイレンス時間
最新のスケールアウト後、弾力性コンポーネントがスケールインを実行しない時間。
サイレンス時間中、弾力性コンポーネントはノードをスケールインしませんが、ノードがスケールインの条件を満たしているかどうかはチェックします。サイレンス時間が終了した後、ノードがスケールインしきい値を満たし、少なくとも 5 分間待機した場合、弾力性コンポーネントは通常どおりスケールインを実行します。例えば、サイレンス時間が 10 分で、スケールイン遅延時間が 5 分の場合、弾力性コンポーネントは最後のスケールアウト後 10 分間はノードをスケールインしません。しかし、その 10 分間以内に、ノードがスケールイン条件を満たしているかどうかをチェックします。サイレンス時間が終了し、ノードがスケールインしきい値を満たし、少なくとも 5 分間待機した場合、弾力性コンポーネントはスケールインに進みます。
ステップ 2: 伸縮性ノードプールの構成
既存のノードプールの[スケーリングモード]を[自動]に変更して構成するか、オートスケーリングを有効にして新しいノードプールを作成できます。
詳細については、「ノードプールの作成と管理」をご参照ください。主な設定は次のとおりです。
設定 | 説明 |
スケーリングモード |
|
インスタンス数 | ノードプールでのスケーリング用の[最小インスタンス数]および[最大インスタンス数]。これには既存のインスタンスは含まれません。 説明
|
インスタンス関連の設定 | スケールアウト時に、ノードは設定されたECS インスタンスファミリーから割り当てられます。スケールアウトの成功率を向上させるには、利用不可や在庫不足を回避するために、複数のゾーンにわたって複数のインスタンスタイプを選択してください。スケーリングに使用される具体的なインスタンスタイプは、設定されたスケーリングポリシーによって決定されます。 ビジネスの安定性と正確なリソーススケジューリングを確保するため、同じノードプールで GPU インスタンスタイプと非 GPU インスタンスタイプを混在させないでください。 スケーリングのインスタンスタイプは、次の 2 つの方法のいずれかで構成します。
構成についてはコンソールの弾力性強度推奨事項をご参照いただくか、作成後にノードプールの弾力性強度を表示することができます。 ACK でサポートされていないインスタンスタイプとノード構成の推奨事項については、「ECS インスタンスタイプ構成推奨事項」をご参照ください。 クラウドのリソースと課金情報: |
オペレーティングシステム | Auto Scaling を有効にする際、Alibaba Cloud Linux、Windows イメージ、または Windows Core イメージを選択できます。 Windows または Windows Core イメージを選択すると、システムは自動的に Taint |
ノードラベル (Labels) | クラスターに追加されたラベルは、Auto Scaling によって作成されたノードに自動的に適用されます。 重要 Auto Scaling は、ラベルと Taint がノードプールタグにマッピングされている場合にのみ認識します。ノードプールタグには制限があります。伸縮性ノードプールの ECS タグ、Taint、およびノードラベルの合計数を 12 未満に保ってください。 |
[スケーリングポリシー] | ノードプールがスケーリング中にインスタンスを選択する方法を構成します。
|
従量課金インスタンスを使用してプリエンプティブル容量を補充する | 課金方法としてスポットインスタンスを選択する必要があります。 有効にすると、価格や在庫の理由で十分なスポットインスタンスを作成できない場合、ACK は自動的に従量課金インスタンスを補足として作成しようとします。 クラウドのリソースと課金情報: |
プリエンプティブルインスタンス補完の有効化 | 課金方法としてスポットインスタンスを選択する必要があります。 有効にすると、スポットインスタンスが回収されるというシステム通知 (回収の 5 分前) を受信した際、ACK は補償のために新しいインスタンスをスケールアウトしようとします。
スポットインスタンスがアクティブに解放されると、業務が中断される可能性があります。補償の成功率を向上させるために、従量課金インスタンスを使用してプリエンプティブル容量を補充する も有効にすることをお勧めします。 クラウドのリソースと課金情報: |
ノードプールで 自動スケーリング を有効にし、スケーリングモード を 自動 に設定する必要があります。
| |
汚染 (Taints) | Taint を追加すると、クラスターはそのノードに Pod をスケジューリングしません。 |
ステップ 3: (オプション) 結果の検証
上記のステップを完了すると、ノードの自動スケーリングを使用できます。ノードプールには Auto Scaling が開始されたことが表示され、クラスターには cluster-autoscaler コンポーネントが自動的にインストールされます。
ノードプールで Auto Scaling が有効化されていることを確認
「ノードプール」ページでは、ノードプールのリストにオートスケーリングが有効なノードプールが表示されます。

cluster-autoscaler コンポーネントがインストールされている
クラスター管理ページの左側のナビゲーションウィンドウで、 を選択します。
kube-system 名前空間を選択して、cluster-autoscaler コンポーネントを表示します。

よくある質問
カテゴリ | サブカテゴリ | リンク |
ノードの自動スケーリングの動作 | ||
cluster-autoscaler は CustomResourceDefinitions (CRD) をサポートしていますか? | ||
カスタムスケーリング動作 | ||
cluster-autoscaler アドオン関連 | ||