ScaledObject リソースが作成されます。KEDA はそれらのトリガーを評価し、ワークロードをスケールアップおよびスケールダウンする Kubernetes HorizontalPodAutoscaler (HPA) リソースを管理します。
オートスケーリングの仕組み
KEDA はワークロードのレプリカ数を変更します。Kubernetes ノードの追加、クォータの増加、またはワークロードを実行できないノードを実行可能にすることはありません。KEDA は、ノードオートスケーラーやその他の容量管理プロセスと連携させてください。
スケーリング戦略
ScaledObjectリソースでは、ワークロードの特性に応じて異なるトリガータイプが使用されます。
生成されるしきい値、レプリカ数の境界、クエリ、およびHPAの動作は、ワークロードとVantageチャートのバージョンによって異なります。インストール環境で生成された
ScaledObjectリソースを正としてください。
CPU 使用率トリガー
Prometheus トリガー
ScaledObject リソースでは、Prometheus の Vantage アプリケーション メトリクスを使用します。主なシグナルは次のとおりです。
application_worker_priority_queue_lengthは、ワーカーの種類ごとに待機中の作業量を示します。application_worker_active_threadsは、アクティブな処理スレッド数を示します。一部の自動生成されたワーカー設定では、キューの深さに加えて、これを 2 つ目の Prometheus トリガーとして使用します。これにより、空きの処理スレッドがなくなった時点でワーカーを先回りしてスケールアップし、新たに到着したタスクを、キューの滞留がたまるまで待たせることなく、すぐに処理できるようにします。
ScaledObject リソースには、複数のトリガーが含まれています。どのトリガーでもスケールアウトを要求でき、HPA は最も大きいレプリカ推奨値を採用します。ワークロードが予期せずスケールした場合は、最初のトリガーだけでなく、すべてのトリガーを確認してください。
Skill 構成に応じてワーカータイプをスケールさせる
前提条件
- KEDA 2.17.3 がインストールされており、その operator と metrics API server が正常に稼働していること。
- Kubernetes の resource metrics API が CPU データを返すこと。
- Prometheus に
http://prometheus-operated.observability.svc.cluster.local:9090でアクセスできること。 - Vantage の
ServiceMonitorが存在し、Prometheus が Vantage の/metrics-textターゲットをUPと報告していること。 - Prometheus が Vantage ワーカー メトリクスの現在の値を返すこと。
- cluster に、TechCore ワーカー 用のラベルが付いた nodes を含め、追加レプリカをスケジュールできる十分な空き容量があること。
ScaledObject resource の固定 endpoint になります。
続行する前に、次の確認を行ってください。
オートスケーリングを有効にする
observability セクションで、チャートによって作成された ServiceMonitor を有効にします。
observability セクションは、vantage や Vantage カスタムリソースの一部ではありません。これは、vantage-selfhosted チャートによって直接生成される監視用リソースを制御します。
値は既存の vantage-selfhosted Helm リリースを通じて適用してください。ArgoCD は、各コンポーネントのアプリケーションとその ScaledObject リソースを非同期に作成します。
オートスケーリングを確認する
ScaledObject リソースの準備が整うまで待ちます:
Ready=Trueは、KEDA がトリガー構成を受け入れたことを示します。Active=Trueは、少なくとも 1 つのトリガーが現在スケーリングを要求していることを示します。- トラフィックやキュー内の処理がない場合、
Active=Falseは正常なことがあります。 - HPA のメトリック値が
<unknown>の場合、Kubernetes はそのメトリックの現在値を取得できないことを示します。
Running になることを確認してください。HPA の desired count が増加しているにもかかわらず pod が Pending のままの場合は、KEDA のトリガーではなく、容量不足またはスケジューリングの問題です。
生成された動作を理解する
- トリガーしきい値と Prometheus クエリ。
- レプリカ数の最小値と最大値。
- スケールアップ速度と安定化動作。
- スケールダウン速度と安定化動作。
クラスター容量を計画する
- ドキュメントの最大到着率と、許容可能なキュー待機時間。
- 代表的なドキュメントとSkillに対する、平均処理時間と上位パーセンタイルの処理時間。
- pod の起動時間とModelのウォームアップ時間。
- 同時にスケーリングする各ワークロードの CPU とメモリのリクエスト値。
- ノードオートスケーラーのプロビジョニング時間と、ノードプールの最大サイズ。
- 名前空間のクォータ、クラスターの上限、レジストリのプルのスループット。
- TechCore ノードのラベル、taint、アクセラレーター、学習ワーカーの分離。
- ノードまたはアベイラビリティゾーンが利用できない場合の障害許容性。
トラブルシューティング
詳細な対処手順については、Troubleshooting KEDA and Prometheus を参照してください。
次のステップ
Prometheus による監視
スクレイピングを設定し、KEDA で使用されるメトリクスを確認します。
前提条件
KEDA、Prometheus、およびクラスターの容量要件を確認します。
トラブルシューティング
異常な ScaledObjects や利用できないメトリクスの問題を診断します。
互換性
KEDA または Vantage をアップグレードする前に、サポート対象のバージョンを確認します。
