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

Container Service for Kubernetes:ノードスケーリングの概要

最終更新日:Jun 18, 2026

ご利用の ACK クラスターが保留中の Pod をスケジュールできない場合、ノードスケーリングを使用してノードを自動的に追加または削除できます。ACK は ノードの自動スケーリングおよび ノードインスタントスケーリングを提供しています。ノードの自動スケーリングと比較して、ノードインスタントスケーリングの方が高速かつシンプルです。

前提条件

このトピックを読み、ACK のノードスケーリングソリューションについて理解し、ノードスケーリングを有効にする前にワークロードに最適なソリューションを選択してください。

Kubernetes 公式ドキュメントで、手動スケーリング、自動スケーリング、水平スケーリング、垂直スケーリングについて確認してください。

ノードスケーリングの仕組み

Kubernetes のノードスケーリングは、従来のリソース使用率しきい値モデルとは異なります。データセンターまたは他のオーケストレーションシステムから Kubernetes へ移行する際には、この点に注意が必要です。

従来のスケーリングモデルでは、CPU またはメモリ使用率がしきい値を超えるとノードが追加されます。ただし、このモデルには以下の課題があります。

スケーリングのしきい値はどのように決定されるか?

ホットノードは通常、他のノードよりも高いリソース使用率を示します。

  • 平均使用率によってスケーリングがトリガーされると、未使用リソースが多いノードによってホットノードの需要がマスクされ、タイムリーなスケールアウトが妨げられます。

  • ピーク使用率によってスケーリングがトリガーされると、クラスター全体でリソースの無駄が発生することが一般的です。

ノード追加後に負荷はどのように軽減されるか?

Kubernetes では、Pod が最小のデプロイ可能な単位です。ノードを追加しても既存の Pod 負荷は再分散されず、Pod 数およびリソース制限は変更されないため、新規ノードは過負荷状態の Pod からのトラフィックを受け取りません。

ノードスケーリングはどのようにトリガーされ、実行されるか?

使用率に基づくスケーリングでは、リソースリクエストが高く実際の使用量が低い Pod がエビクションされる可能性があります。このような Pod が多数存在すると、スケジュール可能なリソースが枯渇し、一部の Pod がスケジュール不能になります。

ACK は、この問題に対処するためにノードスケーリング(リソースレイヤー)とワークロードスケーリング(スケジューリングレイヤー)を採用しています。ノードスケーリングは、Pod のリソース使用率に基づいてスケーリングをトリガーします。

スケールアウトはどのようにトリガーされるか?

ノードスケーリングモデルは、スケジュール不能な Pod を監視します。リソース不足により Pod のスケジュールに失敗した場合、スケジューリングをシミュレートし、自動スケーリングが有効な適切なノードプールを選択してクラスターにノードを追加します。

説明

このシミュレーションでは、自動スケーリングが有効な各ノードプールを仮想ノードとして抽象化します。仮想ノードには、構成されたインスタンスタイプの CPU、メモリ、GPU 容量に加え、ノードプールのラベルおよび Taint が付与されます。スケジューラはこの仮想ノードをスケジュール可能なリストに追加し、必要なノード数を計算してノードをプロビジョニングします。

スケールインはどのようにトリガーされるか?

スケールインは、自動スケーリングが有効なノードプール内のノードにのみ適用されます。静的ノードは管理対象外です。ノードの使用率がスケールインしきい値を下回ると、モデルは Pod のエビクションをシミュレートしてノードをドレイン可能かどうかを検証します。kube-system 名前空間内の DaemonSet 以外の Pod および PodDisruptionBudget で保護された Pod はスキップされます。対象となるすべての Pod が他のノードにエビクションされた後、ノードは削除されます。

自動スケーリング機能が有効な複数のノードプールが存在する場合、どのノードプールが選択されるか?

自動スケーリングが有効な複数のノードプールは、抽象化されたノードとして扱われます。オートスケーラは標準のスケジューリングポリシーを使用してこれらにスコアを付け、ノードアフィニティなどのアフィニティルールを優先します。

アフィニティルールによる一致が見つからない場合、ノードの自動スケーリングは「最少の無駄」の原則に従い、スケールアウト後に最も少ないアイドルリソースを残すノードプールを選択します。

説明

GPU アクセラレーションおよび CPU アクセラレーションの両方に対応した自動スケーリングが有効なノードプールがスケールアウト条件を満たしている場合、CPU アクセラレーションプールが優先されます。

デフォルトでは、ノードインスタントスケーリングはインスタンスの可用性とコストを評価し、十分な在庫があり価格が最も低いタイプを優先します。

自動スケーリングの成功率を向上させる方法は?

自動スケーリングの成功率は、以下の要因に依存します。

  • スケジューリング条件が満たされているか

    自動スケーリングが有効なノードプールを作成した後は、そのノードプールの Pod スケジューリングポリシーを確認してください。不明な場合は、nodeSelectorにノードプールラベルを設定し、スケジューリングシミュレーションを実行してください。

  • リソースが十分にあるか

    シミュレーション後、システムは自動スケーリングが有効なノードプールを選択してノードを追加します。ただし、ノードプール構成内の ECS インスタンスタイプの在庫状況がスケールアウトの成功率に影響します。異なるゾーンに複数のインスタンスタイプを指定することで、成功率を向上させることができます。

自動スケーリングを高速化する方法は?

  • 方法 1:スウィフトモードを使用します。自動スケーリングが有効なノードプールが 1 回のスケールアウトおよび 1 回のスケールインサイクルを完了すると、スウィフトモードに入ります。詳細については、「ノードの自動スケーリングを有効化する」をご参照ください。

  • 方法 2:Alibaba Cloud Linux 3 ベースのカスタムイメージを使用して、IaaS リソースの提供効率を 50 % 向上させます。詳細については、「カスタムイメージによるスケーリングの最適化」をご参照ください。

スケーリングソリューション:ノードの自動スケーリングおよびノードインスタントスケーリング

ノードスケーリングはリソースレベルの機能であり、クラスター内のノード数を自動的に調整します。既存の容量が Pod スケジューリングに不十分な場合、オートスケーラは追加ノードをプロビジョニングします。

ACK は ノードスケーリングのための 2 つのソリューションを提供しています。

概要

重要

ソリューション

コンポーネント

説明

ソリューション 1:ノードの自動スケーリング

cluster-autoscaler

クラスターの状態をラウンドロビン方式でチェックし、条件が満たされた場合にノードをスケーリングします。

ソリューション 2:ノードインスタントスケーリング

ACK GOATScaler

イベント駆動型のノードオートスケーラで、大規模クラスターや連続的なスケールアウトシナリオにおいて効率的なリソース提供を保証します。クラスターは、自動スケーリング機能が有効なノードプールに 100 ノード以上含まれるか、クラスター内に自動スケーリング機能が有効なノードプールが 20 以上存在する場合、大規模とみなされます。 スケーリング速度:45 秒、成功率:99 %、リソースフラグメント削減率:30 %。拡張性のためにカスタムスケーリングポリシーをサポートしています。

ソリューション比較

自動スケーリングが有効なノードプール(スウィフトモードなし)の場合、ノードインスタントスケーリング機能は既存のノードプール構成と互換性があり、すべての Pod タイプをサポートします。以下の表は、ノードインスタントスケーリングノードの自動スケーリングを比較したものです。

メリット

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

ノードインスタントスケーリング

スケーリング速度と効率

標準モードで 60 秒、スウィフトモードで 50 秒。

イベント駆動型スケーリングおよび Alibaba Cloud ContainerOS を使用し、各スケーリングアクティビティに 35~55 秒かかります。

自動スケーリングは 1 分でパフォーマンスボトルネックに達します。効率はノードプール数およびスケーリングシナリオによって変動し、100 以上のノードプールがある場合、所要時間は 100~150 秒に増加します。

ノードプール数または Pod 数が増加してもスケーリング所要時間は安定しており、高速スケーリングが必要なシナリオに適しています。

クラスター状態更新のラウンドロビンモード。最小遅延:5 秒。

イベント駆動型。遅延:1~3 秒。

リソーススケーリングの成功率

クラウドリソースインベントリの変動およびインスタンスタイプの多様性により、ノードの自動スケーリングの成功率は約 97 % です。

自動インベントリ選択ポリシーにより、数千の Alibaba Cloud インスタンスタイプを事前定義された条件および優先順位でフィルタリングし、指定タイプが利用不可の場合に最適なタイプまたは代替タイプを自動的に選択します。これにより運用保守が簡素化され、成功率が 99 % に向上します。

スケールアウトではノードプール構成のインスタンスタイプが使用されます。複数のタイプが指定されている場合、最低スペックのタイプが優先されます。

スケールアウトアクティビティに対して複数のインスタンスタイプを指定できます。

リソーススケーリングが失敗した場合、オートスケーラは定期的に再試行します。

指定されたインスタンスタイプが不足している場合、オートスケーラはアラートを生成できます。

使用方法と運用保守

ノードの自動スケーリングと比較して、ノードインスタントスケーリングは以下の点で使いやすくなっています。

  • ノードプール構成のメンテナンス:ノードインスタントスケーリングは、保留中の Pod をホストするためにタイプおよびゾーン間で自動的にインスタンスを選択します。ノードの自動スケーリングでは、ノードプール構成を手動で維持し、Pod 構成が変更されるたびに更新する必要があります。

  • ノードの運用保守:スケーリング例外は Pod イベントを通じて通知されるため、開発者は Pod のライフサイクル管理に集中できます。

  • 機能拡張:Deschedulerと連携して弾性リソースを準備できます。ノードインスタントスケーリングは非侵入的であり、リソースプロビジョニングポリシーやノードライフサイクル管理におけるカスタムアクションをサポートし、二次開発が可能です。

スケジューリングポリシー

ノードの自動スケーリングのスケジューリング機能に加え、ノードインスタントスケーリングは以下もサポートしています。

  • トポロジー:ゾーン間の高可用性要件を満たします。

  • Pod Disruption Budgets:マルチ Pod アプリケーションにおける同時エビクション数を制限し、計画的な障害時にも安定性を確保します。

ノードインスタントスケーリングは、Bin PackingおよびPreBind(カスタム機能)ポリシーを使用して、リソースフラグメント率を 30 % 削減します。

使用制限: ノード インスタントスケーリング

以下は ノードインスタントスケーリング に適用される制限事項です。ノードインスタントスケーリング を有効にする前にご確認ください。

  • ノードインスタントスケーリングはスウィフトモードをサポートしません。

  • ノードプールは、1 回のスケールアウトバッチで最大 180 ノードまで含めることができます。

  • 特定のクラスターに対してスケールインを無効化することはできません。

    説明

    特定のノードに対してスケールインを無効化するには、「ノードインスタントスケーリングによるノードのスケールインを防止する方法」をご参照ください。

  • ノードインスタントスケーリングソリューションは、プリエンプティブインスタンスの在庫をチェックしません。ノードプールの課金方法がプリエンプティブインスタンスに設定されており、かつスポットインスタンスが不足している場合に従量課金インスタンスを使用が有効になっている場合、十分なプリエンプティブインスタンスが利用可能であっても従量課金インスタンスがスケールアウトされる可能性があります。

ノードスケーリングソリューションの選択

ソリューション比較」および「ノードインスタントスケーリングの制限事項」をご参照ください。ワークロードのスケーリング速度および提供確実性に対する要求が低く、かつノードインスタントスケーリングの制限事項が許容できない場合は、ノードの自動スケーリングを選択してください。

ワークロードが以下のいずれかの要件を満たす場合、ノードインスタントスケーリングを推奨します。

  • 大規模クラスターではノードの自動スケーリングの効率が著しく低下します。ノードインスタントスケーリングはクラスター規模がスケーリング効率にほとんど影響しないため、こちらを選択してください。クラスターは、自動スケーリング機能が有効なノードプールに 100 ノード以上含まれるか、クラスター内に自動スケーリング機能が有効なノードプールが 20 以上存在する場合、大規模とみなされます。

  • より高速なスケーリングが必要な場合。標準モードでは、ノードの自動スケーリングに 60 秒、ノードインスタントスケーリングに 45 秒かかります。

  • 連続的なスケールアウトバッチが頻繁に発生する場合。ノードの自動スケーリングのパフォーマンスは低下し変動しますが、ノードインスタントスケーリングは一貫して約 45 秒のスケーリング時間を維持します。

注意事項

クォータと制限

  • VPC ルートテーブルは最大 200 件のカスタムルートエントリをサポートします。この上限を引き上げるには、クォータセンターで申請を提出してください。その他のリソースクォータについては、「基盤となるクラウドプロダクトのクォータ」をご参照ください。

  • 自動スケーリングが有効なノードプールの最大ノード数を慎重に構成してください。VPC CIDR ブロックや vSwitch などの依存リソースおよびクォータが十分であることを確認しないと、スケールアウトアクティビティが失敗する可能性があります。ノードプールの制限事項については、「ノードの自動スケーリングを有効化する」をご参照ください。ネットワーク計画については、「ACK マネージドクラスターのネットワーク計画」をご参照ください。

  • ノードスケーリングはサブスクリプションノードをサポートしません。自動スケーリングが有効なノードプールを作成する際は、課金方法をサブスクリプションに設定しないでください。既存のノードプールについては、自動スケーリングを有効にする前にサブスクリプションノードが存在しないことを確認してください。

  • ノードスケーリング機能はSideCar Containersと互換性がありません。Sidecar Container ワークロードは、自動スケーリングが無効なノードプールにデプロイしてください。

依存リソースのメンテナンス

ノードスケーリングによって追加された ECS ノードに関連付けられた EIP がある場合、ECS コンソールからこれらのノードを直接削除しないでください。EIP は自動的にリリースされません。

参考資料