Advanced Horizontal Pod Autoscaler (AHPA) は、Container Service for Kubernetes (ACK) に組み込まれた予測型オートスケーリング機能であり、過去のメトリックデータを分析してワークロード需要を予測し、トラフィックスパイク発生前に Pod を事前にプロビジョニングします。これにより、標準的な Kubernetes オートスケーリングに固有の反応遅延を解消します。
背景情報
標準的な Kubernetes オートスケーリング手法には、それぞれトレードオフが存在します:
| 手法 | 制限事項 |
|---|---|
| 固定 Pod 数 | 非ピーク時間帯にアイドル状態の Pod が発生し、リソースを無駄に消費します |
| Horizontal Pod Autoscaler (HPA) | リソース使用量がしきい値を超えてからスケーリングを実行するため、需要増加後に初めて Pod が利用可能になります |
| CronHPA | 各タイムスロットごとに手動で Pod 数を定義する必要があります — 1 分単位の粒度で 1 日をカバーするには 1,440 個の別々のスケジュールが必要 — さらに、トラフィックパターンが変化するたびに更新作業が必要です |
AHPA は、これらの制限を歴史的データからの学習によって解決します。需要の到達を待って反応するのではなく、特定のメトリックの過去の値と、Pod が Ready 状態に遷移するまでの所要時間をもとにワークロードの変動を検出します。これにより、AHPA は今後 24 時間分の毎分ごとの最適な Pod 数を事前にプロビジョニングでき、トラフィック到達時にすでに十分なキャパシティが確保された状態になります。
仕組み
サポート対象のメトリック
AHPA は、CPU、GPU、メモリ、秒間クエリ数 (QPS)、レスポンスタイム (RT)、および外部メトリックに基づいてワークロードをスケーリングします。
予測メカニズム
AHPA は、以下の 2 つの補完的な予測メカニズムを採用しています:
能動的予測 — 過去のメトリックデータを分析し、周期的なパターンを検出して将来の需要を予測します。定期的かつ反復的なトラフィックサイクルを持つワークロードに適しています。
受動的予測 — メトリックをリアルタイムで監視し、条件の変化に応じてキャパシティを動的に調整します。
これらのメカニズムを組み合わせることで、ワークロードの変動検出精度を 95% 以上に達成します。
サービスの劣化
ワークロードの挙動が予期せず変化した場合、AHPA では、特定の時間帯(1 分単位まで細かく指定可能)における最小および最大 Pod 数を定義できます。これは、安全性を確保するための下限および上限として機能します。
スケーリング対象
AHPA は、以下の 3 つのスケーリングメカニズムと統合されます:
| スケーリング対象 | AHPA の活用方法 |
|---|---|
| Knative | サーバーレスシナリオにおけるコールドスタート遅延を解消するため、同時実行数、QPS、または RT を基準にスケーリングします |
| HPA | 標準 HPA を予測ロジックでラップすることで、ポリシー構成を簡素化し、反応遅延を排除します |
| Deployment | HPA を中間層として使用せずに、Deployment を直接スケーリングします |
主な機能
| 機能 | 詳細 |
|---|---|
| 予測速度 | ミリ秒単位でワークロードの変動を予測します |
| スケーリング速度 | 数秒以内に Pod をプロビジョニングします |
| 精度 | ワークロードの変動を 95% 以上の精度で検出します |
| 時間粒度 | 1 分単位の細かい粒度で Pod 数の上下限を設定できます |
適用範囲/利用シーン
周期的なワークロード — ライブストリーミング、オンライン教育、ゲームプラットフォームなど、予測可能なトラフィックサイクルを持つアプリケーション。
突発的トラフィックへの対応 — 定常的なベースライン Pod 数とオートスケーリングを併用し、通常の業務シナリオにおいて予期しないトラフィックスパイクを吸収するデプロイメント。
キャパシティプランニングとの連携 — Pod のプロビジョニングに関する推奨情報を必要とするシステム向けです。AHPA は標準の Kubernetes API を公開しており、予測結果を取得して自社システムへ統合できます。