ワークロードスケーリングおよび計算リソーススケーリングは、トラフィックスパイクに対応しコストを削減するために、Pod レプリカ数およびクラスター容量を動的に調整します。
注意事項
-
ワークロードスケーリングおよびノードスケーリングを設定する前に、Horizontal Pod Autoscaler (HPA)、Vertical Pod Autoscaler (VPA)、およびCluster Autoscalingなどのコミュニティーソリューションについて理解を深めてください。
-
ご利用のクラスターに 500 ノード以上または 10,000 Pod 以上が存在する場合は、クラスターおよびコントロールプレーンの安定性を確保するためにスケーリングレートの計画をご参照ください。
ワークロードスケーリングおよび計算リソーススケーリング
ACK の Auto scaling は次の 2 つのレイヤーで動作します。
-
ワークロードスケーリング:スケジューリングレイヤーで Pod 数または Pod あたりのリソース割り当てを調整します。たとえば、HPA はトラフィックの変化に基づいてアプリケーション Pod をスケーリングします。
-
計算リソーススケーリング:ノードスケーリングおよび仮想ノードスケーリングを通じて、Pod スケジューリングおよびリソース使用量に基づいてクラスターリソースを調整します。
両方のレイヤーを組み合わせることで、Pod スケジューリングの要件を満たしながらリソース利用率を向上させることができます。
ワークロードスケーリング ソリューション
一時的なスケーリングを行うには、kubectl scale を実行して手動で Pod 数を調整します。自動スケーリングを行うには、以下のワークロードスケーリングソリューションから選択してください。
|
ソリューション |
説明 |
スケーリングメトリック |
シナリオ |
参考情報 |
|
HPA |
HPA はピーク時に Pod をスケールアウトし、オフピーク時にスケールインすることでコストを最適化します。ほとんどのシナリオに適しています。 |
|
e コマース、オンライン教育、金融サービスなど、頻繁にトラフィックが変動するオンラインサービスに最適です。 |
|
コンテナ定時スケーリング |
コンテナ定時スケーリングは、タイムゾーンおよび日付をサポートする事前定義された Crontab 形式のスケジュールに基づいて Pod をスケーリングします。祝日などの日付を除外できます。HPA と互換性があります。 |
スケジュールスケーリング |
予測可能なトラフィックパターンまたは定期タスクを持つアプリケーションに最適です。 | |
|
VPA |
VPA は Pod のリソース消費を監視し、CPU およびメモリ割り当てを推奨し、レプリカ数を変更せずに割り当てを調整します。 |
VPA は、Pod の CPU およびメモリのリクエストとリミットを推奨し、必要に応じて自動調整します。 |
ステートフルアプリケーションや大規模なモノリシックデプロイメントなど、安定したリソース割り当てが必要なシナリオに最適です。通常、Pod が異常から回復する際に VPA が有効になります。 |
|
|
Kubernetes-based Event Driven Autoscaling (KEDA) |
KEDA は、多様なイベントソースからのワークロードに対してイベント駆動型の自動スケーリングを実現します。 |
キュー長などのイベント数。 |
ビデオおよび音声トランスコーディング、イベント駆動型ジョブ、ストリーム処理など、即時スケーリングを必要とするイベントベースのオフラインジョブに最適です。 |
|
|
Advanced Horizontal Pod Autoscaler (AHPA) |
AHPA は過去のメトリックからワークロードの変動パターンを学習し、リソース需要を予測して予測的スケーリングを実現します。 |
|
ライブ配信、オンライン教育、ゲームなど、周期的なトラフィックパターンを持つシナリオに最適です。 |
UnitedDeployment コントローラーは、複数のサブセットにわたって同一タイプのワークロードを管理し、サブセットごとにレプリカ数を調整します。上記のスケーリングソリューションと組み合わせることで、計算リソースタイプ間での柔軟なスケーリングが可能になります。UnitedDeployment コントローラーに基づくワークロードスケーリングの実装をご参照ください。
計算リソーススケーリング
計算リソーススケーリングコンポーネントは保留中の Pod を検出し、スケジューリング要件を満たすために ECS ノードまたはエラスティックコンテナインスタンスをプロビジョニングします。
ノードスケーリングの比較については、ノードスケーリングをご参照ください。
以下の表に示すリソース配信統計は理論値です。実際の値は環境によって異なる場合があります。
|
ソリューション |
説明 |
シナリオ |
リソース配信効率 |
参考情報 |
|
ノード自動スケーリング |
ACK は、クラスターリソースが Pod スケジューリング要件を満たせない場合に自動的にノードをスケーリングします。 |
すべてのシナリオに適しています。特にオンラインサービス、ディープラーニングタスク、小規模スケーリングに推奨されます。自動スケーリング対応ノードプールが 20 未満、または各ノードプールのノード数が 100 未満のクラスターに推奨されます。 |
クラスターに 100 ノードを追加するのに必要な時間:
|
|
|
ノードインスタントスケーリング |
ノードインスタントスケーリングは、ノード自動スケーリングと比較して、より高速なスケーリング、より高い配信成功率、および ECS インスタンス在庫のヘルスモニタリングを提供します。ソリューション比較をご参照ください。 |
すべてのシナリオに適しています。特に、大規模クラスターで高速スケーリングが必要な場合、マルチインスタンスタイプおよびマルチゾーンスケーリング、またはトポロジースプレッド制約などの高度なスケジューリングが必要な場合に推奨されます。自動スケーリング対応ノードプールのいずれかに 100 ノード以上が含まれる、またはクラスター全体で自動スケーリング対応ノードプールが 20 を超える場合、大規模クラスターとみなされます。 |
クラスターに 100 ノードを追加するのに必要な時間:
|
|
|
仮想ノード |
仮想ノードにより、ノード管理および容量計画が不要になります。クラスターは仮想ノード上で最大 50,000 Pod をサポートし、スケールアウト時には最大 1 分以内に 10,000 Pod を作成できます。 |
すべてのシナリオに適しています。特にタスク、定期タスク、データコンピューティング、AI アプリケーション、ワークロードの急増に最適です。 |
クラスターで 1,000 Pod を作成するのに必要な時間:
|
課金
Auto scaling 自体は無料です。スケーリングコンポーネントは Pod として実行されるため、ご利用のクラスターには少なくとも 1 つのノードが必要です。自動スケーリングによって追加されたノードについては課金されます。課金概要をご参照ください。
よくある質問
Auto scaling のよくある質問をご参照ください。
参照
-
事前インストールまたは高性能スケーリングについては、スケーリング最適化のためのカスタムイメージをご参照ください。
-
Auto scaling のログを収集するには、システムコンポーネントのログファイルの収集をご参照ください。
-
ワークロードを構成する際は、推奨されるワークロード構成に従ってください。
-
サーバーレスコンテナについては、Knative がリクエスト数および同時実行数に基づいて Pod をスケーリングします(ゼロへのスケーリングを含む)。トラフィックの変動に対応するための自動スケーリングの有効化をご参照ください。