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

Container Service for Kubernetes:ノードの即時伸縮を有効にする

最終更新日:Nov 09, 2025

クラスターが大規模であるか、または迅速なリソース配信が必要な場合、ノードの自動スケーリングではニーズを満たせない可能性があります。ノードの即時伸縮機能を使用すると、リソースの伸縮性を向上させ、O&M コストを削減できます。

始める前に

ノードの即時伸縮機能を使用する前に、「ノードのスケーリング」をお読みになり、次の概念を理解していることを確認してください。

  • ノードの即時伸縮の仕組み

  • ノードの即時伸縮の利点と適用可能なビジネスシナリオ

  • ノードの即時伸縮を使用する際の注意事項

  • スケールイン中、サブスクリプションインスタンスはクラスターから削除されますが、リリースはされません。不要なコストが発生しないように、この機能を有効にするときは従量課金インスタンスを使用することをお勧めします。

使用上の注意

  • この機能は、Kubernetes バージョン 1.24 以降を実行する ACK マネージドクラスターおよび ACK 専用クラスターでのみ利用できます。クラスターをアップグレードするには、「クラスターを手動でアップグレードする」をご参照ください。

  • Auto Scaling サービスが有効化されていることを確認してください。

  • ノードの即時伸縮が有効になっているノードプールに設定された vSwitch に、ノード作成の失敗を防ぐのに十分な数の利用可能な IP アドレスがあることを確認してください。DescribeVSwitchAttributes 操作を呼び出して、vSwitch の利用可能な IP アドレスの数をクエリできます。

    利用可能な IP アドレスの数が不十分な場合は、「セカンダリ CIDR ブロックを使用してクラスターに CIDR ブロックを追加する」をご参照ください。

  • ノードプールで自動スケーリングが有効になっており、ノードプールの [スケーリングモード][標準モード] に設定されている場合、ノードの即時伸縮は元の弾性ノードプールのセマンティクスと動作と互換性があります。すべてのタイプのアプリケーションでこの機能をシームレスに有効にして使用できます。ただし、ノードの即時伸縮は、[スケーリングモード][高速モード] に設定されているノードプールとは互換性がありません。

  • ノードの即時伸縮コンポーネントのバージョンが v0.5.3 より前の場合、オフラインノードを手動で削除する必要があります。詳細については、「よくある質問」をご参照ください。

このプロセスには、次のステップが含まれます。

  1. ステップ 1: ノードの即時伸縮を有効にする: ノードプールの自動スケーリングポリシーを有効にするには、まずクラスターの ノードの自動スケーリングを有効にする必要があります。

  2. ステップ 2: 自動スケーリング用にノードプールを設定する: ノードの自動スケーリング機能は、自動スケーリング用に設定されたノードプールでのみ機能します。したがって、指定されたノードプールのスケーリングモードも自動に設定する必要があります。

ステップ 1: ノードの即時伸縮機能を有効にする

ノードの即時伸縮機能を使用する前に、ノードプールページでクラスターの自動スケーリングを有効にして設定し、ノードのスケーリングを許可する必要があります。

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

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

  3. クラスターの自動スケーリング機能を初めて使用する場合は、画面の指示に従って Auto Scaling サービスを有効にし、必要な権限を付与します。サービスを有効にして権限を付与している場合は、このステップをスキップしてください。

    • ACK マネージドクラスター: AliyunCSManagedAutoScalerRole ロールに権限を付与します。

    • ACK 専用クラスター: KubernetesWorkerRole ロールと AliyunCSManagedAutoScalerRolePolicy システムポリシーに権限を付与します。次の図にエントリを示します。

      image

  4. [ノードスケーリング設定] ページで、[ノードスケーリングソリューション][即時伸縮] に設定し、スケーリングパラメーターを設定してから、[OK] をクリックします。

    弾性スケーリングが実行されると、スケーリングコンポーネントはスケジューリングステータスに基づいて自動的にスケールアウトをトリガーします。

    選択後、ノードスケーリングソリューションを切り替えることができます。ソリューションを切り替えるには、「ノードの自動スケーリング」に変更できます。画面のメッセージをよく読み、指示に従ってください。この機能は、ホワイトリストに登録されているユーザーのみが利用できます。この機能を使用するには、チケットを送信してください。

    設定項目

    説明

    スケールインのしきい値

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

    スケールインのトリガー遅延

    詳細設定項目の説明を表示する

    設定項目

    説明

    Pod 削除タイムアウト

    ノードのスケールイン中にノード上の Pod が終了するのを待つ最大時間。単位: 秒。

    最小 Pod レプリカ数

    ノードのスケールイン前に各 ReplicaSet で許可される Pod の最小数。Pod が属する ReplicaSet の実際のレプリカ数がこの値より小さい場合、ノードはスケールインされません。

    DaemonSet Pod のドレインを有効にする

    この機能を有効にすると、ノードがスケールインされるときに、ノード上の DaemonSet Pod が退避されます。

    Kube-system 名前空間に Pod があるノードをスキップする

    この機能を有効にすると、システムは自動ノードスケールイン中に kube-system 名前空間で Pod を実行するノードを無視できます。これにより、これらのノードがスケールインの影響を受けないようにします。

    説明

    この機能は、DaemonSet Pod とミラー Pod には適用されません。

ステップ 2: 自動スケーリング用にノードプールを設定する

ノードの即時伸縮は、自動スケーリングが有効になっているノードプール内のノードのみをスケーリングします。したがって、ノードの即時伸縮を設定した後、自動スケーリング用に少なくとも 1 つのノードプールも設定する必要があります。

  • ノードプールを作成し、自動スケーリングを有効にします。詳細については、「ノードプールを作成する」をご参照ください。

  • 既存のノードプールを設定して、自動スケーリングを有効にします。詳細については、「ノードプールを編集する」をご参照ください。

ノードプールで利用可能なインスタンスタイプの範囲を拡大します。たとえば、複数のインスタンスタイプを設定したり、インスタンス属性を指定したり、ノードプールに複数のゾーンを設定したりできます。これにより、インスタンスタイプの十分な在庫とスケーリングアクティビティの成功を確実にします。

(オプション) ステップ 3: 結果の確認

上記の手順を完了すると、ノードの即時伸縮機能が有効になります。ノードプールには自動スケーリングが有効になっていることが示され、ノードの即時伸縮コンポーネントがクラスターに自動的にインストールされます。

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

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

image

ノードの即時伸縮コンポーネントがインストールされている

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

  2. [コンポーネント] ページで、ACK GOATScaler コンポーネントを見つけます。コンポーネントのステータスは [インストール済み] です。

ノードの即時伸縮の主要なイベント

ノードの即時伸縮には、次の主要なイベントが含まれます。これらのイベントを表示して、ノードの即時伸縮がトリガーされたときの内部ステータスを確認できます。

イベント名

イベントオブジェクト

説明

ProvisionNode

pod

ノードの即時伸縮がノードのスケールアウトを正常にトリガーします。

ProvisionNodeFailed

pod

ノードの即時伸縮がノードのスケールアウトのトリガーに失敗します。

ResetPod

pod

ノードの即時伸縮は、条件を満たし、スケールアウトをトリガーしたが、まだスケジュール不可能な Pod を、スケールアウトがトリガー可能な範囲に再追加します。

InstanceInventoryStatusChanged

ACKNodePool

ゾーン内のインスタンスタイプの供給ステータスが変更されます。フォーマットは {インスタンスタイプ}/{ゾーン} の在庫ステータスが {古い在庫ステータス} から {新しい在庫ステータス} に変更されました です。

詳細については、「ノードの即時伸縮のヘルスステータスを表示する」をご参照ください。

ノードの即時伸縮の識別子

ノードの即時伸縮は、次の識別子を維持します。手動で変更しないでください。変更すると、例外が発生する可能性があります。

ノードラベル

ノードラベル

説明

goatscaler.io/managed:true

ノードの即時伸縮によって管理されるノードを識別します。このラベルを持つノードについて、ノードの即時伸縮はスケールイン条件が満たされているかどうかを定期的にチェックします。

k8s.aliyun.com: true

ノードの即時伸縮によって管理されるノードを識別します。このラベルを持つノードについて、ノードの即時伸縮はスケールイン条件が満たされているかどうかを定期的にチェックします。

goatscaler.io/provision-task-id:{task-id}

ノードの即時伸縮がノードをスケールアウトするために使用するタスクのタスク ID を識別します。これにより、ノード作成のトリガーソースを追跡できます。

ノード Taint

ノード Taint

説明

goatscaler.io/node-terminating

この Taint を持つノードは、ノードの即時伸縮によってスケールインされます。

Pod アノテーション

Pod アノテーション

説明

goatscaler.io/provision-task-id

この Pod のために ノードの即時伸縮によってスケールアウトされたノードのタスク ID を識別します。このアノテーションを持つ Pod について、ノードの即時伸縮はノードが開始するのを待ち、スケールアウトを繰り返しトリガーしません。

goatscaler.io/reschedule-deadline

ノードの即時伸縮が Pod がノードにスケジュールされるのを待つ期間を識別します。この期間が過ぎても Pod がスケジュール不可能な場合、ノードの即時伸縮は Pod をスケールアウトがトリガー可能な範囲に再追加します。

よくある質問

カテゴリ

サブカテゴリ

ジャンプリンク

ノードの即時スケーリングのスケーリング動作

既知の制限

スケールアウトの動作

スケールインの動作

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

Pod を使用したスケーリング動作の制御

Pod を使用してノードのスケールインを制御するにはどうすればよいですか?

ノードを使用したスケーリング動作の制御

ノードの即時スケーリングコンポーネントについて

関連操作

ノードの即時伸縮のヘルスステータスを表示する

リアルタイムノード伸縮機能は、ECS インスタンスの在庫に基づいてインスタンスタイプとゾーンを動的に選択します。インスタンスタイプの在庫のヘルス状態を監視し、ノードプールの設定に関する最適化の提案を取得し、スケーリングアクティビティの成功を確実にするには、ノードプールの在庫ヘルス ConfigMap を表示します。これにより、現在の在庫を評価し、事前にインスタンスの仕様を調整できます。

詳細については、「ノードの即時伸縮のヘルスステータスを表示する」をご参照ください。

ノードの即時伸縮のログ収集を有効にする

ACK マネージドクラスターを使用している場合、[コントロールプレーンコンポーネントログ] ページで ノードの即時伸縮のコンポーネントログを収集できます。

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

  2. クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のペインで、[操作] > [ログセンター] を選択します。

  3. [コントロールプレーンコンポーネントログ] タブをクリックし、右上隅の [コンポーネントの更新] をクリックして、プロンプtに従って ノードの即時伸縮コンポーネントを選択します。

    image

    コンポーネントが更新されるのを待ちます。更新が完了したら、コンポーネントのドロップダウンリストから ノードの即時伸縮コンポーネントを選択して、そのログを表示できます。

    image

ノードの即時伸縮コンポーネントのアップグレード

ノードの即時伸縮コンポーネントをタイムリーにアップグレードして、最新の機能と最適化を使用してください。詳細については、「コンポーネントの管理」をご参照ください。

プライベートプールを使用してリソースを供給する場合の在庫チェックのスキップ

プライベートプールを使用してリソースの在庫を確保する場合、SkipInventoryCheck を有効にする必要があります。これにより、ノードの即時伸縮コンポーネントは、スケールアウト中にプライベートプールにないリソースの在庫チェックをスキップし、プライベートプール内の予約済みリソースを直接使用できます。

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

  2. [コアコンポーネント] セクションで、ACK GOATScaler コンポーネントを見つけ、コンポーネントカードの [設定] をクリックします。

    SkipInventoryCheck は、コンポーネントバージョン v0.3.0-582e405-aliyun 以降でのみサポートされます。コンポーネントのバージョンが要件を満たしていない場合は、まずコンポーネントをアップグレードしてください。
  3. 画面の指示に従って、SkipInventoryCheck を true に設定します。