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

Container Service for Kubernetes:ノードの自動スケーリングを有効にする

最終更新日:May 28, 2025

現在の Container Service for ACK (ACK) クラスタ内のリソースがポッドのスケジューリングを満たすことができない場合、ノードの自動スケーリングを使用してノードを自動的にスケーリングできます。ノードの自動スケーリング機能は、スケーリング要件が限られているシナリオに適用されます。これには、自動スケーリングが有効になっているノードプールが 20 未満のクラスタ、またはノードプールあたりのノード数が 100 未満のクラスタが含まれます。ノードの自動スケーリングは、安定したトラフィックパターン、定期的または予測可能なリソース需要、および単一バッチのスケーリングがビジネス要件を満たす操作のワークロードに最適です。

開始する前に

ノード自動スケーリング機能をより適切に操作するために、「ノードスケーリング」のトピックを読み、以下の項目に注意することをお勧めします。

对 ノード自動スケーリングの仕組みとその機能

对 ノード自動スケーリングの使用シナリオ

对 ノード自動スケーリングの使用上の注意

前提条件

Auto Scaling がアクティブになっていることを確認します。

この機能には、次のワークフローが含まれます。

  1. ステップ 1: クラスタのノード自動スケーリングを有効にする

    ノードプール自動スケーリングモードは、クラスタの自動スケーリングが有効になった後にのみ有効になります。

  2. ステップ 2: 自動スケーリングが有効なノードプールを構成する

    ノードの自動スケーリング機能は、自動スケーリングが有効になっているノードプールにのみ適用されます。ターゲットノードプールの [スケーリングモード][自動] に明示的に設定する必要があります。

ステップ 1: クラスタの ノード自動スケーリングを有効にする

  1. ACK コンソール にログオンします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。

  2. [クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。

  3. ノードプール ページで、ノードスケーリング の横にある [有効にする] をクリックします。

    1.jpg

  4. ノード自動スケーリング機能を初めて使用する場合は、表示される指示に従ってサービスをアクティブ化し、承認を完了します。それ以外の場合は、この手順をスキップします。

    • ACK マネージドクラスターの場合、クラウド リソースにアクセスするために ACK が AliyunCSManagedAutoScalerRole を使用することを承認します。

    • ACK 専用クラスターの場合、スケーリング管理のために KubernetesWorkerRole と AliyunCSManagedAutoScalerRolePolicy を使用するように ACK を承認します。次の図は、[ノードスケーリング] を有効にしたときに承認できるコンソールページを示しています。

      image

  5. [ノードスケーリングの構成] パネルで、[ノードスケーリング方法][自動スケーリング] に設定し、スケーリングパラメータを構成して、[OK] をクリックします。

    [ノードスケーリングの構成] は、インスタントスケーリング に切り替えて、表示される指示に従って構成ワークフローを完了することで変更できます。

    パラメータ

    説明

    ノードプールのスケールアウトポリシー

    • ランダムポリシー: 複数のスケーラブルなノードプールが存在する場合、ランダムにノードプールをスケールアウトします。

    • デフォルトポリシー: 複数のスケーラブルなノードプールが存在する場合、リソースの浪費が最も少ないノードプールをスケールアウトします。

    • 優先順位ベースのポリシー: 複数のスケーラブルなノードプールが存在する場合、スケールアウトの優先順位に基づいてノードプールをスケールアウトします。

      ノードプールのスケールアウトの優先順位は、[ノードプールのスケールアウトの優先順位] パラメータで定義されます。

    ノードプールのスケールアウトの優先順位

    • スケールアウト操作中のスケーリング順序を指定します。[ノードプールのスケールアウトポリシー][優先順位ベースのポリシー] に設定されている場合にのみ有効です。

    • 有効な値: 1 ~ 100 の整数。数値が大きいほど、優先順位が高くなります。

    • 構成手順:

      a. パラメータの横にある [+ 追加] をクリックします。

      b. 自動スケーリングが有効なノードプールを選択します。

      c. 優先順位の値を設定します。

    • 自動スケーリングが有効なノードプールがない場合は、このパラメータを今はスキップし、ステップ 2: 自動スケーリングが有効なノードプールを構成する を完了した後に構成します。

    スキャン間隔

    クラスタのスケーリングを評価する間隔を指定します。デフォルト値: 60 秒。

    自動スケーラーは、実際のスケジューリングステータスに基づいてスケールアウトアクティビティをトリガーします。

    重要
    • Elastic Compute Service (ECS) ノード: 自動スケーラーは、[スケールインのしきい値][スケールインの遅延時間]、および [クールダウン] の条件が満たされた場合にのみ、スケールインアクティビティを実行します。

    • GPU アクセラレーテッドノード: 自動スケーラーは、[GPU スケールインのしきい値][スケールインの遅延時間:]、および [クールダウン] の条件が満たされた場合にのみ、スケールインアクティビティを実行します。

    スケールインを許可

    スケールインアクティビティを許可するかどうかを指定します。このスイッチがオフになっていると、スケールインの構成は有効になりません。注意して進めてください。

    スケールインのしきい値

    ノード自動スケーリングが有効になっているノードプール内のノードのリソース要求とノードのリソース容量の比率を指定します。

    スケールインアクティビティは、ノードの CPU 使用率とメモリ使用率が [スケールインのしきい値] より低い場合にのみ実行されます。

    GPU スケールインのしきい値

    GPU アクセラレーテッドノードのスケールインのしきい値。

    スケールインアクティビティは、ノードの CPU、メモリ、および GPU 使用率が [スケールインのしきい値] より低い場合にのみ実行されます。

    スケールインの遅延時間

    スケールインのしきい値に達した時刻とスケールインアクティビティ (ポッド数の削減) が開始される時刻の間隔。単位: 分。デフォルト値: 10。

    重要

    自動スケーラーは、[スケールインのしきい値] が構成され、[スケールインの遅延時間] の条件が満たされた場合にのみ、スケールインアクティビティを実行します。

    クールダウン

    自動スケーラーがスケールアウトアクティビティを実行した後、スケールインアクティビティを実行できるようになるまでクールダウン期間が待機されます。

    自動スケーラーは、クールダウン期間内にスケールインアクティビティを実行できませんが、ノードがスケールイン条件を満たしているかどうかを引き続き確認できます。クールダウン期間が終了した後、ノードがスケールイン条件を満たし、[スケールインの遅延時間] パラメータで指定された待機期間が終了すると、ノードは削除されます。たとえば、[クールダウン] パラメータが 10 分に設定され、[スケールインの遅延時間] パラメータが 5 分に設定されているとします。自動スケーラーは、スケールアウトアクティビティを実行した後、10 分間のクールダウン期間内にスケールインアクティビティを実行できません。ただし、自動スケーラーは、クールダウン期間内にノードがスケールイン条件を満たしているかどうかを引き続き確認できます。クールダウン期間が終了すると、スケールイン条件を満たすノードは 5 分後に削除されます。

    高度なスケールイン設定を表示

    パラメータ

    説明

    ポッドの終了タイムアウト

    スケールインアクティビティ中にノード上のポッドが終了するのを待つ最大時間。単位: 秒。

    複製ポッドの最小数

    ノードがスケールダウンされる前に各レプリカセットで許可されるポッドの最小数。ポッドが属するレプリカセットのレプリカ数がこのパラメータよりも少ない場合、ノードはスケールインされません。

    DaemonSet ポッドをエビクト

    有効にすると、スケールインアクティビティ中に DaemonSet ポッドがエビクトされます。

    Kube-system ポッドをホストするノードをスキップ

    有効にすると、kube-system 名前空間で実行されているポッドを持つノードは、スケールインアクティビティ中に無視され、影響を受けないようにします。

    説明

    この機能は、Mirror Pod と DaemonSet Pod には影響しません。

ステップ 2: 自動スケーリングが有効なノードプールを構成する

既存のノードプールの [スケーリングモード][自動] に切り替えるか、自動スケーリングが有効な新しいノードプールを作成することで、既存のノードプールを変更できます。詳細な手順については、「ノードプールを作成および管理する」をご参照ください。

主な構成は次のとおりです。

パラメータ

説明

スケーリングモード

[手動] スケーリングと [自動] スケーリングがサポートされています。コンピューティングリソースは、ビジネス要件とポリシーに基づいて自動的に調整され、クラスタコストを削減します。

  • [手動]: ACK は、[必要なノード数] パラメータの値に基づいてノードプール内のノード数を調整します。ノード数は常に [必要なノード数] パラメータの値と同じです。詳細については、「ノードプールを手動でスケーリングする」をご参照ください。

  • [自動]: クラスタの容量計画がポッドスケジューリングの要件を満たせない場合、ACK は構成された最小インスタンス数と最大インスタンス数に基づいてノードを自動的にスケールアウトします。デフォルトでは、Kubernetes 1.24 以降を実行しているクラスタでは ノードインスタントスケーリング が有効になり、Kubernetes 1.24 より前のバージョンを実行しているクラスタでは ノード自動スケーリング が有効になります。詳細については、「ノードのスケーリング」をご参照ください。

インスタンス

ノードプールに定義されている [最小インスタンス数][最大インスタンス数] には、既存のインスタンスは含まれません。

説明
  • [最小インスタンス数] をゼロより大きい値に設定すると、変更が適用されたときにスケーリンググループが指定された数の ECS インスタンスを自動的に作成します。

  • [最大インスタンス数] は、ノードプール内の現在のノード数以上になるように構成します。そうしないと、自動スケーリングが有効になるとすぐにスケールダウンがトリガーされます。

インスタンス関連のパラメータ

インスタンスタイプまたは属性に基づいて、ワーカーノードプールで使用される ECS インスタンスを選択します。vCPU、メモリ、インスタンスファミリ、アーキテクチャなどの属性で インスタンスファミリ をフィルタリングできます。ACK でサポートされていないインスタンスの仕様とノードの構成方法の詳細については、「ACK クラスタの ECS 仕様の推奨事項」をご参照ください。

ノードプールがスケールアウトされると、選択したインスタンスタイプの ECS インスタンスが作成されます。ノードプールのスケーリングポリシーによって、スケールアウトアクティビティ中に新しいノードの作成に使用されるインスタンスタイプが決まります。ノードプールのスケールアウト操作の成功率を向上させるには、複数のインスタンスタイプを選択します。

ノードプール内のノードのインスタンスタイプ。インスタンスタイプを 1 つだけ選択すると、ECS インスタンスの在庫の変動がスケーリングの成功率に影響します。スケーリングの成功率を高めるために、複数のインスタンスタイプを選択することをお勧めします。

GPU アクセラレーテッドインスタンスのみを選択した場合は、必要に応じて [GPU 共有を有効にする] を選択できます。詳細については、「cGPU の概要」をご参照ください。

オペレーティングシステム

自動スケーリングを有効にすると、Alibaba Cloud Linux、Windows、または Windows Core に基づいてイメージを選択できます。

Windows または Windows Core に基づくイメージを選択すると、システムはノードプール内のノードに { effect: 'NoSchedule', key: 'os', value: 'windows' } taint を自動的に追加します。

ノードラベル

ノードラベルは、スケールアウトアクティビティによってクラスタに追加されたノードに自動的に追加されます。

重要

自動スケーリングは、ノードラベルと taint がノードプールタグにマッピングされた後にのみ、ノードラベルと taint を認識できます。ノードプールに設定できるタグの数は限られています。したがって、自動スケーリングが有効になっているノードプールの ECS タグ、taint、およびノードラベルの合計数を 12 未満に制限する必要があります。

スケーリングポリシー

  • 優先度: ノードプールに選択した [vSwitch] の優先度に基づいて、ノードプールがスケーリングされます。選択した vSwitch は、優先度の高い順に表示されます。Auto Scaling が優先度が最も高い vSwitch のゾーンに ECS インスタンスを作成できない場合、Auto Scaling は次に優先度が高い vSwitch のゾーンに ECS インスタンスを作成しようとします。

  • コスト最適化: システムは vCPU 単価の低い順にインスタンスを作成します。

    ノードプールの [課金方法][プリエンプティブルインスタンス] に設定されている場合、プリエンプティブルインスタンスが優先的に作成されます。[従量課金インスタンスの割合] パラメーターを設定することもできます。在庫不足などの理由でプリエンプティブルインスタンスを作成できない場合は、従量課金インスタンスが自動的に作成されて補完されます。

  • 分散バランシング: 均等分散ポリシーは、複数の vSwitch を選択した場合にのみ有効になります。このポリシーにより、ECS インスタンスはスケーリンググループのゾーン(vSwitch)間で均等に分散されます。在庫不足などの理由で不均等に分散されている場合は、リバランス操作を実行できます。

プリエンプティブルインスタンスが不足している場合に従量課金インスタンスを使用する

Billing Method パラメーターを Preemptible Instance に設定する必要があります。

Static Web Apps は、静的コンテンツと動的コンテンツの両方をホストできるサービスです。WordPress は動的コンテンツを生成するため、Static Web Apps で直接ホストすることはできません。ただし、静的サイト ジェネレーターを使用して WordPress サイトの静的バージョンを作成し、それを Static Web Apps にデプロイすることは可能です。

[補足的なプリエンプティブル インスタンスを有効にする]

Billing Method パラメーターをプリエンプティブル インスタンスに設定する必要があります。

この機能が有効になると、システムがプリエンプティブル インスタンスが回収されたというメッセージを受信したときに、自動スケーリングが有効になっているノード プールは、回収されたプリエンプティブル インスタンスを置き換える新しいインスタンスの作成を試みます。

スケーリングモード

[ノードプール] ページで [ノードスケーリング] を有効にし、ノードプールの [スケーリングモード][自動] に設定する必要があります。
  • 標準: 自動スケーリングは、ECS インスタンスの作成と解放によって実装されます。

  • 迅速: 自動スケーリングは、ECS インスタンスの作成、停止、および開始によって実装されます。停止状態の ECS インスタンスを直接再起動して、スケーリングアクティビティを高速化できます。

    ECS インスタンスが停止しているときは、ディスク料金のみが課金されます。コンピューティング料金は発生しません。このルールは、ビッグデータやローカル SSD インスタンスファミリなど、ローカルディスクを使用するインスタンスファミリには適用されません。エコノミーモードの課金ルールと制限の詳細については、「エコノミーモード」をご参照ください。

Taint

ノードに taint を追加すると、ACK はポッドをノードにスケジュールしなくなります。

ステップ 3: (オプション) ノード自動スケーリングを確認する

上記の構成を完了した後、ノード自動スケーリング機能を使用できます。ノードプールには、自動スケーリングが有効になっており、cluster-autoscaler がクラスタにインストールされていることが表示されます。

ノードプールの自動スケーリングが有効になっている

[ノードプール] ページには、自動スケーリングが有効になっているノードプールが表示されます。

image

cluster-autoscaler がインストールされている

  1. 詳細ページの左側のナビゲーションウィンドウで、[ワークロード] > [デプロイメント] を選択します。

  2. kube-system 名前空間を選択します。cluster-autoscaler コンポーネントが表示されます。

    image

よくある質問

カテゴリ

サブカテゴリ

問題

ノード自動スケーリングのスケーリング動作

制限

スケールアウトの動作

スケールインの動作

拡張サポート

cluster-autoscaler は CRD をサポートしていますか?

カスタムスケーリング動作

ポッドを使用してスケーリングを管理する

ノードを使用してスケーリングを管理する

cluster-autoscaler に関する質問