ノードの自動スケーリングを使用すると、クラスターの 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"]
この機能には、次のステップが含まれます。
ステップ1:クラスターのノード自動スケーリングの有効化:ノードプールの自動スケーリングポリシーは、クラスターレベルでノードの自動スケーリングを有効にした後にのみ有効になります。
ステップ2:自動スケーリングのためのノードプールの設定:ノードの自動スケーリング機能は、自動スケーリングが設定されているノードプールにのみ適用されます。したがって、目的のノードプールのスケーリングモードも自動に設定する必要があります。
ステップ1:クラスターのノード自動スケーリングの有効化
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスター をクリックします。
ノードプール ページで、ノードスケーリング の横にある 設定 をクリックします。

初めてノードの自動スケーリングを使用する場合は、画面の指示に従って ESS サービスを有効化し、権限付与を完了してください。すでに完了している場合は、このステップをスキップしてください。
ACK マネージドクラスター:AliyunCSManagedAutoScalerRole ロールに権限を付与します。
ACK 専用クラスター:KubernetesWorkerRole ロールと AliyunCSManagedAutoScalerRolePolicy システムポリシーに権限を付与します。次の図はエントリを示しています。

ノードスケーリング設定 パネルで、ノードスケーリング方法 を 自動スケーリング に設定し、スケーリングパラメーターを設定してから OK をクリックします。
選択後、ノードスケーリング方法を切り替えることができます。これを行うには、パネルで方法をノードのインスタントスケーリングに変更できます。画面の指示をよく読み、操作を完了してください。
設定
説明
ノードプールのスケールアウトポリシー
ランダムポリシー:複数のスケーラブルなノードプールが存在する場合、ランダムに 1 つがスケールアウトに選択されます。
デフォルトポリシー:複数のスケーラブルなノードプールが存在する場合、リソースの浪費が最も少ないものがスケールアウトに選択されます。
優先度ベースのポリシー:複数のスケーラブルなノードプールが存在する場合、優先度が最も高いものがスケールアウトに選択されます。
ノードプールの優先度は、ノードプールのスケールアウト優先度 パラメーターによって定義されます。
ノードプールのスケールアウト優先度
ノードプールのスケールアウト優先度を設定します。このパラメーターは、ノードプールのスケールアウトポリシー が 優先度ベースのポリシー に設定されている場合にのみ有効です。
値は 1 から 100 までの整数です。値が大きいほど優先度が高くなります。
パラメーターの横にある 追加 をクリックし、自動スケーリングが有効になっているノードプールを選択して、その優先度を設定します。
自動スケーリングが有効になっているノードプールがない場合は、このパラメーターを一旦無視し、ステップ2:自動スケーリングが有効なノードプールの設定 を完了した後にノードプールの優先度を設定できます。
スケーリング感度
システムがスケーリングの必要性をチェックする間隔です。デフォルト値は 60 秒です。
エラスティックスケーリングが実装されると、エラスティックコンポーネントはスケジューリングステータスに基づいて自動的にスケールアウトをトリガーします。
重要ECS ノード: 弾性コンポーネントは、[スケールインのしきい値]、[スケールインのトリガー遅延]、および [クールダウン] の条件がすべて満たされた場合にのみ、ノードのスケールインを実行します。
GPU ノード:エラスティックコンポーネントは、GPU スケールインのしきい値、スケールインのトリガー遅延、および クールダウン の条件がすべて満たされた場合にのみ、GPU ノードのスケールインを実行します。
スケールインを許可
ノードのスケールインを許可するかどうかを指定します。これをオフにすると、スケールインの設定は有効になりません。慎重に設定してください。
スケールインのしきい値
ノードの自動スケーリングが有効になっているノードプール内の単一ノードのリソースリクエストとリソース容量の比率です。
ノードは、この比率が設定されたしきい値を下回った場合にのみスケールインできます。これは、ノードの CPU とメモリのリソース使用率が両方とも スケールインのしきい値 を下回っていることを意味します。
GPU スケールインのしきい値
GPU インスタンスのスケールインのしきい値です。
GPU ノードは、この比率が設定されたしきい値を下回った場合にのみスケールインできます。これは、ノードの CPU、メモリ、および GPU のリソース使用率がすべて GPU スケールインのしきい値 を下回っていることを意味します。
スケールインのトリガー遅延
スケールインの必要性が検出されてからスケールイン操作が実行されるまでの時間間隔です。単位:分。デフォルト値:10 分。
重要エラスティックコンポーネントは、スケールインのしきい値 の条件が満たされ、スケールインのトリガー遅延 が経過した後にのみ、ノードのスケールインを実行できます。
クールダウン
直近のスケールアウト後、エラスティックコンポーネントがスケールイン操作を実行しない時間間隔です。
クールダウン期間中、エラスティックコンポーネントはノードをスケールインしませんが、ノードがスケールインの対象であるかどうかを引き続きチェックします。クールダウン期間が終了した後、ノードがスケールインのしきい値とスケールインのトリガー遅延の両方の条件を満たしている場合、エラスティックコンポーネントはスケールインを続行します。たとえば、クールダウンが 10 分で、スケールインのトリガー遅延が 5 分の場合、エラスティックコンポーネントはスケールアウト後 10 分間はどのノードもスケールインしません。ただし、この時間中もノードのスケールイン適格性を評価します。10 分のクールダウン後、ノードが 5 分の遅延を超えてスケールインのしきい値を満たしている場合、そのノードはスケールインされます。
ステップ2:自動スケーリングのためのノードプールの設定
既存のノードプールの スケーリングモード を 自動 に変更して設定するか、自動スケーリングが有効な新しいノードプールを作成できます。
詳細については、「ノードプールの作成と管理」をご参照ください。主要なパラメーターは次のとおりです。
設定 | 説明 |
スケーリングモード |
|
インスタンス数 | ノードプールがスケーリングできる インスタンスの最小数 と インスタンスの最大数 です。これには既存のインスタンスは含まれません。 説明
|
インスタンス関連の設定 | ノードプールがスケールアウトすると、選択された ECS インスタンスファミリー からノードが割り当てられます。より多くのゾーンでより多くのインスタンスタイプを選択すると、ノードのスケールアウトの成功率が向上し、利用できないインスタンスタイプや在庫不足による失敗を防ぐことができます。スケールアウトの具体的なインスタンスタイプは、スケーリングポリシー によって決定されます。
コンソールの弾力性強度の推奨事項を参照するか、作成後にノードプールの弾力性強度を表示できます。 ACK でサポートされていないインスタンスタイプとノード設定の推奨事項については、「ECS インスタンスタイプの設定に関する推奨事項」をご参照ください。 クラウドリソースと課金: |
オペレーティングシステム | 自動スケーリングを有効にすると、Alibaba Cloud Linux、Windows、または Windows Core イメージを選択できます。 Windows または Windows Core イメージを選択すると、システムは自動的に |
ノードラベル | クラスターで追加したノードラベルは、スケールアウト中に作成されるノードに自動的に追加されます。 重要 自動スケーリングは、ノードラベルと Taint がノードプールのタグにマッピングされた後にのみ認識できます。ノードプールにはタグの数に制限があります。したがって、自動スケーリングが有効になっているノードプールの ECS タグ、Taint、およびノードラベルの合計数は 12 以下である必要があります。 |
[スケーリングポリシー] | ノードスケーリング中にノードプールがインスタンスを選択する方法を設定します。
|
オンデマンドインスタンスを使用してスポットキャパシティを補完 | これは、課金方法がスポットインスタンスに設定されている場合に必要です。 この機能を有効にし、価格や在庫の問題で十分なスポットインスタンスを作成できない場合、ACK は自動的にオンデマンドインスタンスを補完として作成しようとします。 クラウドリソースと課金: |
補足的なスポットインスタンスを有効化 | スポットインスタンスの補償を有効化 これは、課金方法がスポットインスタンスに設定されている場合に必要です。 この機能を有効にすると、スポットインスタンスが回収される直前 (回収の 5 分前) にシステムメッセージを受信したときに、ACK は補償のために新しいインスタンスのスケールアウトを試みます。
スポットインスタンスの積極的なリリースは、ビジネス上の例外を引き起こす可能性があります。補償の成功率を向上させるために、オンデマンドインスタンスを使用してスポットキャパシティを補完も有効にすることを推奨します。 クラウドリソースと課金: |
スケーリングモード | ノードプールに対して ノードの自動スケーリング を有効にし、スケーリングモード を 自動 に設定する必要があります。
|
Taint | Taint を追加すると、クラスターは Pod をそのノードにスケジュールしなくなります。 |
ステップ3:(オプション) 結果の確認
上記の手順を完了すると、ノードの自動スケーリング機能が有効になります。ノードプールのステータスは、自動スケーリングが有効であることを示し、cluster-autoscaler コンポーネントがクラスターに自動的にインストールされます。
ノードプールで自動スケーリングが有効になっている
ノードプール ページでは、ノードプールリストにどのノードプールで自動スケーリングが有効になっているかが表示されます。

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

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