Advanced Horizontal Pod Autoscaler (AHPA) は、ACK のコンポーネントであり、Kubernetes ワークロードに予測型スケーリング機能を追加します。標準の Horizontal Pod Autoscaler (HPA) はメトリクスの急増後に反応しますが、AHPA は機械学習に基づく能動的予測とリアルタイムの受動的予測を統合することで、この遅延を解消し、トラフィック到達前に Pod を準備します。
AHPA コントローラーをインストールして、予測型スケーリング機能を有効化します。
仕組み
AHPA は、2 つの補完的なスケーリングパスを並列で実行します。
能動的予測: AHPA は DAMO アカデミーの機械学習アルゴリズムを用いて過去のメトリクスデータを分析し、最大 24 時間先の Pod 需要量を予測します。予測されたトラフィック急増に先立ち、Pod を事前にプロビジョニングします。このパスは、毎日のピーク、週単位のサイクルなど、周期的なトラフィックパターンを持つアプリケーションに有効です。
受動的予測: リアルタイムのメトリクスが予測されたベースラインから逸脱した場合(例:予期せぬトラフィックスパイク発生時)、AHPA は現在のデータに基づき即時に Pod 数を調整します。このパスは、予測不能な負荷変動に対するセーフティネットを提供します。
サービス劣化機能では、1 つ以上の特定のタイムウィンドウ内で、Pod 数の上限および下限を設定できます。
以下の図は、AHPA のアーキテクチャを示しています。
このアーキテクチャは、以下のモジュールで構成されます。
| モジュール | 役割 |
|---|---|
| DAMO アカデミーの機械学習アルゴリズム | 過去のメトリクスを分析し、最大 24 時間先の Pod 需要量を予測 |
| 能動的予測器 | 機械学習による予測結果に基づき、事前スケーリングをスケジュール |
| 受動的予測器 | リアルタイムのメトリクスを監視し、予測ベースラインからの逸脱が閾値を超えた場合に即時スケーリングを実行 |
| スケーリングエグゼキュータ | Knative、HPA、または Deployment に対してスケーリング決定を適用 |
| サービス劣化レイヤー | 特定のタイムウィンドウ内で設定された最小/最大 Pod 数を強制適用 |
サポートされているメトリック
AHPA は、以下のメトリクスタイプをサポートします:CPU、メモリ、クエリ/秒(QPS)、応答時間(RT)、および外部メトリクス。
スケーリング方法
AHPA は、以下の 3 種類のターゲットに対してスケーリング決定を適用します。
| ターゲット | 推奨ユースケース |
|---|---|
| Knative | サーバーレスワークロード向け;コールドスタート問題を解決;同時実行数、クエリ/秒(QPS)、または応答時間(RT)に基づくスケーリング |
| HPA | 標準 Kubernetes ワークロード向け;ポリシー構成がシンプル;コールドスタートにも対応 |
| Deployment | 中間の HPA リソースを経由せず、直接 Deployment をスケーリング |
すべての Pod がエラスティックコンテナインスタンス上で実行される ACK サーバーレスクラスターでは、AHPA によりゼロノード自動スケーリングが可能になります。つまり、ノード容量の管理を行わずに、Pod レベルでクラスターをスケーリングできます。
設計原則
AHPA は、以下の 3 つの原則に基づいて構築されています。
安定性: スケーリングは、アプリケーションが安定状態にある場合にのみトリガーされます。
運用管理不要: クライアント側に追加のコントローラーは不要です。AHPA の構成構文は HPA よりも簡潔です。
サーバーレス志向: ノードのリソース使用率ではなく、Pod に焦点を当てており、サーバーレスおよびエラスティックコンテナインスタンス環境に自然に適合します。
注意事項
構成の詳細、前提条件、YAML のサンプルについては、「AHPA の概要」をご参照ください。
リリースノート
2024 年 4 月
| バージョン | リリース日 | 説明 | 影響 |
|---|---|---|---|
| v2.6.0-aliyun.1 | 2024-04-16 | metrics-server を使用するメトリクス収集リンクを最適化しました。 | 非ピーク時間帯にアップデートを実施してください。 |
2024 年 3 月
| バージョン | リリース日 | 説明 | 影響 |
|---|---|---|---|
| v2.5.6-aliyun.1 | 2024-03-20 | カスタムメトリクス処理に起因する panic 問題を修正しました。 | 非ピーク時間帯にアップデートを実施してください。 |
2023 年 12 月
| バージョン | リリース日 | 説明 | 影響 |
|---|---|---|---|
| v2.5.0-aliyun.1 | 2023-12-25 | カスタム PromQL 設定および Elastic Workload への対応を追加しました。kubectl の出力を改善し、定期実行機能が有効かどうかを表示するようにしました。 | 非ピーク時間帯にアップデートを実施してください。 |
2023 年 10 月
| バージョン | リリース日 | 説明 | 影響 |
|---|---|---|---|
| v2.4.0-aliyun.1 | 2023-10-16 | 受動的予測における複数メトリクス対応を追加しました。kubectl の出力を改善し、複数の AHPA メトリクスを表示するようにしました。TargetRef で指定されたオブジェクトの変更が反映されない問題を修正しました。 | 非ピーク時間帯にアップデートを実施してください。 |
2023 年 7 月
| バージョン | リリース日 | 説明 | 影響 |
|---|---|---|---|
| v2.3.0-aliyun.1 | 2023-07-12 | カスタムメトリクス対応を追加しました。kubectl の出力を改善し、参照されるリソースの種別を表示するようにしました。 | 非ピーク時間帯にアップデートを実施してください。 |
2023 年 6 月
| バージョン | リリース日 | 説明 | 影響 |
|---|---|---|---|
| v2.2.0-aliyun.1 | 2023-06-19 | 予測型スケーリングにおける同時実行数メトリクス対応を追加しました。Knative の受動的処理ロジックを最適化しました。リアルタイムの CPU およびメモリメトリクス照会のレイテンシを改善しました。 | 非ピーク時間帯にアップデートを実施してください。 |
2023 年 4 月
| バージョン | リリース日 | 説明 | 影響 |
|---|---|---|---|
| v2.1.0-aliyun.1 | 2023-04-26 | Prometheus ダッシュボード対応を追加しました。過去のメトリクスについてカスタマイズ可能な期間範囲をサポートしました。 | 非ピーク時間帯にアップデートを実施してください。 |
2022 年 7 月
| バージョン | リリース日 | 説明 | 影響 |
|---|---|---|---|
| v1.0.0-aliyun.1 | 2022-07-13 | 初回リリース。予測型スケーリングにおいて、CPU、メモリ、応答時間(RT)、クエリ/秒(QPS)の各メトリクスをサポート。Deployment、HPA、Knative を通じたスケーリングをサポート。 | ワークロードへの影響はありません。 |