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

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

最終更新日:Mar 29, 2025

クラスタに割り当てられたリソースが需要の高さによりアプリケーション ポッドのスケジューリングに不十分な場合は、ACK One 登録済みクラスターで自動スケーリング機能を有効にして、ノードを自動的にスケールアウトし、スケジューリングに使用可能なリソースを増やします。2 つの弾力性ソリューションを使用できます。ノード自動スケーリングノードインスタントスケーリングです。ノード自動スケーリングは、自動スケーリングが有効になっているノードプールが 20 未満のクラスターや、100 ノード未満を含むノードプールなど、小規模な操作に適しています。ノードインスタントスケーリングは、より高速なスケーリング、より高い配信効率、およびより低い運用複雑さを提供します。そのため、大規模なクラスターや遅延の影響を受けやすいワークロードに最適です。

前提条件

ノードの自動スケーリングを有効にする

手順 1: ノードの自動スケーリング をクラスターに対して有効にする

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

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

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

    1.jpg

  4. (オプション) 自動スケーリング機能を初めて使用する場合は、画面の指示に従ってサービスをアクティブ化し、権限付与プロセスを完了します。それ以外の場合は、このステップをスキップします。

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

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

    パラメーター

    説明

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

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

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

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

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

    ノードプール スケールアウト優先度

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

    • 有効な値: 1 から 100 までの整数。数値が大きいほど優先度が高くなります。

    • 設定手順:

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

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

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

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

    [スキャン間隔]

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

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

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

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

    [スケールインを許可]

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

    [スケールインしきい値]

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

    A scale-in activity is performed only when the CPU and memory utilization of a node is lower than the [スケールインしきい値]. スケールインアクティビティは、ノードの CPU とメモリの使用率が [スケールインしきい値] より低い場合にのみ実行されます。

    [GPU スケールインしきい値]

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

    A scale-in activity is performed only when the CPU、メモリ、および GPU 使用率が、[スケールインしきい値] より低い場合にのみ、スケールインアクティビティが実行されます。

    [スケールインの延期]

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

    重要

    autoscaler は、[スケールインしきい値] が設定され、[スケールインの延期] 条件が満たされた場合にのみ、スケールインアクティビティを実行します。

    クールダウン

    オートスケーラーがスケールアウト アクティビティを実行した後、スケールイン アクティビティを実行する前にクールダウン期間に入ります。

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

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

    パラメーター

    説明

    [pod 終了タイムアウト]

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

    [複製ポッドの最小数]

    ReplicaSet ごとに許可されるポッドの最小数。この数よりポッド数が少ない場合、ノードがスケールダウンされます。

    [daemonset ポッドの削除]

    DaemonSet が有効になっている場合、スケールイン アクティビティ中に DaemonSet ポッドが削除されます。

    [kube-system ポッドをホストするノードをスキップ]

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

    説明

    この機能は、Mirror Pod と DaemonSet Pod には効果がありません。

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

既存のノードプールを [スケーリングモード][自動] に切り替えることで変更するか、または自動スケーリングが有効になっている 新しいノードプールを作成する ことができます。主な構成は次のとおりです。

パラメーター

説明

[スケーリングモード]

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

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

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

インスタンス

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

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

  • [最大インスタンス数] を、ノードプール内の現在のノード数以上に設定してください。そうでない場合、自動スケーリングが有効になるとすぐにスケールダウンがトリガーされます。

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

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

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

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

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

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

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

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

[ノードラベル]

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

重要

Auto scaling は、ノードラベルとテイントがノードプールタグにマップされた後にのみ、ノードラベルとテイントを認識できます。ノードプールが持つことができるタグの数は限られています。そのため、Auto scaling が有効になっているノードプールの ECS タグ、テイント、およびノードラベルの合計数を 12 未満に制限する必要があります。

スケーリングポリシー

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

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

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

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

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

[課金方法] パラメーターを [プリエンプティブルインスタンス] に設定する必要があります。

この機能が有効になっている場合、価格または在庫の制約によりプリエンプティブル インスタンスを十分に作成できないと、ACK は従量課金インスタンスを自動的に作成して、必要な数の ECS インスタンスを満たします。

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

[課金方法] パラメーターを [プリエンプティブルインスタンス] に設定する必要があります。

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

[スケーリングモード]

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

  • Swift: オートスケーリングは、ECS インスタンスの作成、停止、および開始によって実装されます。停止状態のインスタンスは、スケーリングを高速化するために直接再起動できます。

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

テイント

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

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

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

ノードプールに対して自動スケーリングが有効になっています

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

image

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

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

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

    image

ノードのインスタント伸縮を有効にする

手順 1: [ノードのインスタントスケーリング] 機能を有効にする

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

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

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

    1.jpg

  4. (オプション) インスタント伸縮性機能を初めて使用する場合は、プロンプトに従って ESS サービスをアクティブ化し、権限付与を完了してください。それ以外の場合は、このステップをスキップしてください。

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

    スケールアウト アクティビティは、実際のスケジューリング ステータスに基づいて自動的にトリガーされます。スケールイン条件のみを設定する必要があります。

    パラメーター

    説明

    [スケールインしきい値]

    ノードのインスタントスケーリングが有効になっているノードプールにおいて、ノードのリソースリクエストとノードのリソース容量の比率を指定します。

    A scale-in activity is performed only when the combined total of CPU and memory utilization of a node is lower than the [スケールインしきい値] です。

    [GPU スケールインしきい値]

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

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

    [スケールインの延期]

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

    重要

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

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

    パラメーター

    説明

    [pod 終了タイムアウト]

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

    [複製ポッドの最小数]

    ReplicaSet ごとに許可されるポッドの最小数。この数よりポッド数が少ない場合、ノードがスケールダウンされます。

    [daemonset ポッドの削除]

    DaemonSet が有効になっている場合、スケールイン アクティビティ中に DaemonSet ポッドは削除されます。

    [kube-system ポッドをホストするノードをスキップ]

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

    説明

    この機能は、Mirror Pod と DaemonSet Pod には効果がありません。

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

既存のノードプールを [スケーリングモード][自動] に切り替えることで変更するか、または自動スケーリングが有効になっている 新しいノードプールを作成する ことができます。主な構成は次のとおりです。

パラメーター

説明

[スケーリングモード]

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

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

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

インスタンス

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

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

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

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

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

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

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

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

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

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

Windows または Windows Core に基づくイメージを選択すると、システムによって { effect: 'NoSchedule', key: 'os', value: 'windows' } という汚染がノードプール内のノードに自動的に追加されます。

[ノードラベル]

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

重要

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

スケーリングポリシー

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

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

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

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

[プリエンプティブル インスタンスが不足している場合の従量課金制インスタンスの使用]

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

この機能が有効になっている場合、価格または在庫の制約によりプリエンプティブル インスタンスを十分に作成できないと、ACK は従量課金インスタンスを自動的に作成して、必要な数の ECS インスタンスを満たします。

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

[課金方法] パラメーターを [プリエンプティブルインスタンス] に設定する必要があります。

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

スケーリングモード

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

  • Swift: オートスケーリングは、ECS インスタンスの作成、停止、および開始によって実装されます。停止状態のインスタンスは、スケーリングを高速化するために直接再起動できます。

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

テイント

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

ステップ 3: (オプション) ノードのインスタントスケーリングを検証する

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

ノードプールに対して自動スケーリングが有効になっています

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

ノード即時スケーリングコンポーネントがインストールされています

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

  2. アドオン ページで、ACK GOATScaler コンポーネントに [インストール済み] と表示されます。