3.6.2. ジョブへのカスタムメトリクスオートスケーラーの追加
任意の Job オブジェクトに対してカスタムメトリクスオートスケーラーを作成できます。
スケーリングされたジョブを使用したスケーリングはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
前提条件
- Custom Metrics Autoscaler Operator をインストールしている。
手順
以下のような YAML ファイルを作成します。
kind: ScaledJob apiVersion: keda.sh/v1alpha1 metadata: name: scaledjob namespace: my-namespace spec: failedJobsHistoryLimit: 5 jobTargetRef: activeDeadlineSeconds: 6001 backoffLimit: 62 parallelism: 13 completions: 14 template:5 metadata: name: pi spec: containers: - name: pi image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] maxReplicaCount: 1006 pollingInterval: 307 successfulJobsHistoryLimit: 58 failedJobsHistoryLimit: 59 envSourceContainerName:10 rolloutStrategy: gradual11 scalingStrategy:12 strategy: "custom" customScalingQueueLengthDeduction: 1 customScalingRunningJobPercentage: "0.5" pendingPodConditions: - "Ready" - "PodScheduled" - "AnyOtherCustomPodCondition" multipleScalersCalculation : "max" triggers: - type: prometheus13 metadata: serverAddress: https://thanos-querier.openshift-monitoring.svc.cluster.local:9092 namespace: kedatest metricName: http_requests_total threshold: '5' query: sum(rate(http_requests_total{job="test-app"}[1m])) authModes: "bearer" authenticationRef:14 name: prom-cluster-triggerauthentication- 1
- ジョブを実行できる最大期間を指定します。
- 2
- ジョブの再試行回数を指定します。デフォルト値は
6です。 - 3
- オプション: ジョブを並行して実行する Pod レプリカの数を指定します。デフォルトは
1です。-
非並列ジョブの場合は、未設定のままにします。設定されていない場合、デフォルトは
1になります。
-
非並列ジョブの場合は、未設定のままにします。設定されていない場合、デフォルトは
- 4
- オプション: ジョブを完了したとマークするために必要な、正常に完了した Pod 数を指定します。
-
非並列ジョブの場合は、未設定のままにします。設定されていない場合、デフォルトは
1になります。 - 固定の完了数を持つ並列ジョブの場合、完了の数を指定します。
-
ワークキューのある並列ジョブでは、未設定のままにします。設定されていない場合、デフォルトは
parallelismパラメーターの値になります。
-
非並列ジョブの場合は、未設定のままにします。設定されていない場合、デフォルトは
- 5
- コントローラーが作成する Pod のテンプレートを指定します。
- 6
- オプション: スケールアップ時のレプリカの最大数を指定します。デフォルトは
100です。 - 7
- オプション: 各トリガーをチェックする間隔を秒単位で指定します。デフォルトは
30です。 - 8
- オプション: 保持する必要がある正常に終了したジョブの数を指定します。デフォルトは
100です。 - 9
- オプション: 保持する必要がある失敗したジョブの数を指定します。デフォルトは
100です。 - 10
- オプション: カスタムオートスケーラーがシークレットなどを保持する環境変数を取得するターゲットリソース内のコンテナーの名前を指定します。デフォルトは
.spec.template.spec.containers[0]です。 - 11
- オプション: スケーリングされたジョブが更新されるたびに、既存のジョブを終了するかどうかを指定します。
-
default: 関連する scaled job が更新された場合、オートスケーラーは既存のジョブを終了します。オートスケーラーは、最新の仕様でジョブを再作成します。 -
gradual: 関連する scaled job が更新された場合、オートスケーラーは既存のジョブを終了しません。オートスケーラーは、最新の仕様で新しいジョブを作成します。
-
- 12
- オプション: スケーリングストラテジーを指定します:
default、custom、またはaccurate。デフォルトはdefaultです。詳細は、以下の「関連情報」セクションのリンクを参照してください。 - 13
- 「カスタムメトリクスオートスケーラートリガーについて」セクションで説明されているように、スケーリングの基準として使用するトリガーを指定します。
- 14
- オプション: トリガー認証またはクラスタートリガー認証を指定します。詳細は、関連情報 セクションの カスタムメトリクスオートスケーラー認証について を参照してください。
-
トリガー認証を使用するには、
TriggerAuthenticationと入力します。これがデフォルトです。 -
クラスタートリガー認証を使用するには、
ClusterTriggerAuthenticationと入力します。
-
トリガー認証を使用するには、
次のコマンドを実行して、カスタムメトリクスオートスケーラーを作成します。
$ oc create -f <filename>.yaml
検証
コマンド出力を表示して、カスタムメトリクスオートスケーラーが作成されたことを確認します。
$ oc get scaledjob <scaled_job_name>出力例
NAME MAX TRIGGERS AUTHENTICATION READY ACTIVE AGE scaledjob 100 prometheus prom-triggerauthentication True True 8s出力の次のフィールドに注意してください。
-
TRIGGERS: 使用されているトリガーまたはスケーラーを示します。 -
AUTHENTICATION: 使用されているトリガー認証の名前を示します。 READY: スケーリングされたオブジェクトがスケーリングを開始する準備ができているかどうかを示します。-
Trueの場合、スケーリングされたオブジェクトの準備は完了しています。 -
Falseの場合、作成したオブジェクトの 1 つ以上に問題があるため、スケーリングされたオブジェクトの準備は完了していません。
-
ACTIVE: スケーリングが行われているかどうかを示します。-
Trueの場合、スケーリングが行われています。 -
Falseの場合、メトリクスがないか、作成したオブジェクトの 1 つ以上に問題があるため、スケーリングは行われていません。
-
-