ScaledObject リソースが作成されます。KEDA はそれらのトリガーを評価し、ワークロードをスケールアップおよびスケールダウンする Kubernetes HorizontalPodAutoscaler (HPA) リソースを管理します。
オートスケーリングの仕組み
KEDA はワークロードのレプリカ数を変更します。Kubernetes ノードの追加、クォータの増加、またはワークロードを実行できないノードを実行可能にすることはありません。KEDA は、ノードオートスケーラーやその他の容量管理プロセスと連携させてください。
スケーリング戦略
生成されたScaledObjectリソースでは、ワークロードの特性に応じて異なるトリガータイプが使用されます。
生成されるしきい値、レプリカ数の境界、クエリ、およびHPAの動作は、ワークロードとVantageチャートのバージョンによって異なります。インストール環境で生成された
ScaledObjectリソースを正としてください。
CPU 使用率トリガー
CPU トリガーでは、ワークロードの平均 CPU 使用率を設定されたターゲット値と比較します。CPU 使用率はワークロードの CPU リクエストに対する相対値として計算されるため、Kubernetes の resource metrics API が正常に動作しており、ワークロードに有効な CPU リクエストが設定されている必要があります。 resource metrics が利用可能であることを確認します。Prometheus トリガー
非同期ワーカー のScaledObject リソースでは、Prometheus の Vantage アプリケーション メトリクスを使用します。主なシグナルは次のとおりです。
application_worker_priority_queue_lengthは、ワーカーの種類ごとに待機中の作業量を示します。application_worker_active_threadsは、アクティブな処理スレッド数を示します。一部の自動生成されたワーカー設定では、キューの深さに加えて、これを 2 つ目の Prometheus トリガーとして使用します。これにより、空きの処理スレッドがなくなった時点でワーカーを先回りしてスケールアップし、新たに到着したタスクを、キューの滞留がたまるまで待たせることなく、すぐに処理できるようにします。
ScaledObject リソースには、複数のトリガーが含まれています。どのトリガーでもスケールアウトを要求でき、HPA は最も大きいレプリカ推奨値を採用します。ワークロードが予期せずスケールした場合は、最初のトリガーだけでなく、すべてのトリガーを確認してください。
Skill 構成に応じてワーカータイプをスケールさせる
TechCore の処理は、OCR、Extraction、Classification などのワーカータイプに分かれており、各ワーカータイプはそれぞれ専用のキュー上で個別にスケールします。デプロイした Skill によって、どのワーカータイプに最も負荷がかかるかが決まります。OCR の比重が高い Skill 構成では OCR ワーカーの需要が高まり、抽出の比重が高い構成では Extraction ワーカーの需要が高まります。 ドキュメントはこれらのワーカータイプを段階的に通過するため、ステージ間の処理能力の不均衡は、エラーではなく待機として現れます。あるステージのリソースが、その前段のステージに対して不足している場合 (たとえば、OCR の処理能力は十分でも Extraction ワーカーが少なすぎる場合) 、ドキュメントは最初のステージをすばやく通過したあと、下流のキューが解消され、そのワーカーがスケールアウトするまで数分間待機します。本番用 Skill 構成で代表的な負荷テストを実施し、ワーカータイプごとのキューの深さを監視したうえで、レプリカ数の相対的な境界値の調整について ABBYY account team と相談してください。前提条件
KEDA を有効にする前に、次の点を確認してください。- 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 になります。
続行する前に、次の確認を行ってください。
オートスケーリングを有効にする
Vantage の設定で KEDA を有効にし、別個のトップレベル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 のトリガーではなく、容量不足またはスケジューリングの問題です。
生成された動作を理解する
Vantage のワークロード用チャートは、次のワークロード固有の設定を提供します。- トリガーしきい値と Prometheus クエリ。
- レプリカ数の最小値と最大値。
- スケールアップ速度と安定化動作。
- スケールダウン速度と安定化動作。
クラスター容量を計画する
オートスケーリングでは、規模不足のクラスターや制約のあるクラスターを補うことはできません。次の点を考慮して計画してください。- ドキュメントの最大到着率と、許容可能なキュー待機時間。
- 代表的なドキュメントとSkillに対する、平均処理時間と上位パーセンタイルの処理時間。
- pod の起動時間とModelのウォームアップ時間。
- 同時にスケーリングする各ワークロードの CPU とメモリのリクエスト値。Sizing ページの本番環境の数値を出発点としてください。
- ノードオートスケーラーのプロビジョニング時間と、ノードプールの最大サイズ。
- 名前空間のクォータ、クラスターの上限、レジストリのプルのスループット。
- TechCore ノードのラベル、taint、アクセラレーター、学習ワーカーの分離。
- ノードまたはアベイラビリティゾーンが利用できない場合の障害許容性。
トラブルシューティング
詳細な対処手順については、Troubleshooting KEDA and Prometheus を参照してください。
次のステップ
Prometheus による監視
スクレイピングを設定し、KEDA で使用されるメトリクスを確認します。
前提条件
KEDA、Prometheus、およびクラスターの容量要件を確認します。
トラブルシューティング
異常な ScaledObjects や利用できないメトリクスの問題を診断します。
互換性
KEDA または Vantage をアップグレードする前に、サポート対象のバージョンを確認します。
