クラウドネイティブのシナリオでは、リソース需要を予測することは困難です。 Kubernetesが提供する水平ポッドオートスケーラー (HPA) は、リソースを遅延させてスケーリングし、設定が複雑になります。 上記の問題を解決するために、Container Service for Kubernetes (ACK) はAdvanced Horizontal Pod Autoscaler (AHPA) をリリースしました。 AHPAは、ワークロードの変動を自動的に識別し、履歴メトリックデータに基づいてリソース需要を予測して、予測スケーリングの実装に役立ちます。
背景情報
アプリケーションのポッドを管理するには、ポッドの数を手動で指定し、HPAを使用し、CronHPAを使用します。 次の表は、前述の方法の欠点を示しています。
移動方法 | デメリット |
ポッドの数を手動で指定する | リソースは無駄になり、オフピーク時間帯にアイドルリソースに対して課金されます。 |
HPAを使用する | スケーリングアクティビティは、スケーリング遅延後に実行されます。 スケールアウトアクティビティは、リソース使用量がしきい値を超えた場合にのみトリガーされ、スケールインアクティビティは、リソース使用量がしきい値を下回った場合にのみトリガーされます。 |
CronHPAを使用する |
|
ACKクラスターは、予測スケーリングをサポートするAHPA機能を提供します。 AHPAを使用して、リソース使用率を高め、リソース管理の効率を向上させることができます。 AHPAは、履歴データを分析し、24時間以内に1分あたりに必要なポッドの数を予測できます。 CronHPAを使用する場合は、代わりに1,440 (24時間 × 60分) のスケジュールを手動で作成する必要があります。 次の図は、従来の水平ポッドのスケーリングと予測水平ポッドのスケーリングの違いを示しています。
従来のポッドの水平スケーリング: スケールアウトアクティビティは、ワークロードの量が増加した後にトリガーされます。 システムは、スケーリング遅延のために変動するワークロードを処理する最も早い機会にポッドをプロビジョニングすることができません。
ポッドの水平方向の予測スケーリング: AHPAは、特定のメトリックの履歴値と、ポッドの状態が準備完了に変わるまでにポッドが費やした時間に基づいて、ワークロードの変動を識別します。 このようにして、AHPAは、トラフィックスパイクが発生する前にスケジュールする準備ができているポッドをプロビジョニングできます。 これは、リソースが最も早い機会に割り当てられることを保証する。
ビジネスアーキテクチャ
さまざまなメトリック: AHPAは、CPU、GPU、メモリ、1秒あたりのクエリ数 (QPS) 、応答時間 (RT) 、外部メトリックなどのメトリックをサポートします。
安定性: AHPAは、プロアクティブ予測、パッシブ予測、およびサービス劣化を使用して、アプリケーションに十分なリソースを保証します。
事前予測: AHPAは、過去のメトリックデータに基づいて作業負荷変動の傾向を予測します。 プロアクティブ予測は、ワークロードが定期的に変動するアプリケーションに適しています。
パッシブ予測: AHPAはワークロードの変動をリアルタイムで予測します。 AHPAは、ワークロードの変動を予測し、リソースをリアルタイムでデプロイできます。
サービスの劣化: AHPAを使用すると、1つ以上の期間内のポッドの最大数と最小数を指定できます。
複数のスケーリング方法: AHPAは、Knative、HPA、およびDeploymentsを使用してスケーリングを実行できます。
Knative: AHPAは、サーバーレスシナリオでの同時実行、QPS、またはRTに基づくリソーススケーリングのコールドスタートの問題を解決するのに役立ちます。
HPA: AHPAはHPAスケーリングポリシーの設定を簡素化し、初心者がスケーリング遅延の問題を処理するのに役立ちます。
デプロイメント: AHPAはデプロイメントを直接使用して自動スケーリングを実行できます。
利点
高いパフォーマンス: AHPAは、ワークロードの変動をミリ秒以内に予測し、リソースを数秒以内にスケーリングできます。
高精度: AHPAは、プロアクティブ予測とパッシブ予測に基づいて、95% よりも高い精度で作業負荷変動を特定できます。
高い安定性: AHPAを使用すると、数分の正確な時間内に必要なポッドの最大数と最小数を指定できます。
シナリオ
ライブストリーミング、オンライン教育、ゲームアプリケーションなど、ワークロードが定期的に変動するアプリケーション。
デプロイされるポッドの数が固定され、ワークロードの変動を処理するために自動スケーリングも使用されるシナリオ。 たとえば、通常のビジネスシナリオで予期しないバーストトラフィックを処理できます。
プロビジョニングするポッドの数に関するシステムの推奨事項が必要です。 AHPAは、予測結果を取得できる標準のKubernetes APIを提供しています。 APIをビジネスシステムに統合できます。
関連ドキュメント
AHPAのデプロイと使用方法の詳細については、「AHPAのデプロイ」をご参照ください。
AHPAを使用してGPUメトリックに基づいて予測スケーリングを実行する方法の詳細については、「AHPAを使用してGPUメトリックに基づいて予測スケーリングを実行する」をご参照ください。
KnativeでAHPAを使用する方法の詳細については、「KnativeでAHPAを使用して予測スケーリングを有効にする」をご参照ください。