3.10. カスタムメトリクスオートスケーラーの追加方法について
カスタムメトリクスオートスケーラーを追加するには、デプロイメント、ステートフルセット、またはカスタムリソース用の ScaledObject
カスタムリソースを作成します。ジョブの ScaledJob
カスタムリソースを作成します。
スケーリングするワークロードごとに、スケーリングされたオブジェクトを 1 つだけ作成できます。スケーリングされたオブジェクトと水平 Pod オートスケーラー (HPA) は、同じワークロードで使用できません。
3.10.1. ワークロードへのカスタムメトリクスオートスケーラーの追加 リンクのコピーリンクがクリップボードにコピーされました!
Deployment
、StatefulSet
、または custom resource
オブジェクトによって作成されるワークロード用のカスタムメトリクスオートスケーラーを作成できます。
前提条件
- Custom Metrics Autoscaler Operator をインストールしている。
CPU またはメモリーに基づくスケーリングにカスタムメトリクスオートスケーラーを使用する場合:
クラスター管理者は、クラスターメトリクスを適切に設定する必要があります。メトリクスが設定されているかどうかは、
oc describe PodMetrics <pod-name>
コマンドを使用して判断できます。メトリクスが設定されている場合、出力は以下の Usage の下にある CPU と Memory のように表示されます。oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
$ oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スケーリングするオブジェクトに関連付けられた Pod には、指定されたメモリーと CPU の制限が含まれている必要があります。以下に例を示します。
Pod 仕様の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
以下のような YAML ファイルを作成します。名前
<2>
、オブジェクト名<4>
、およびオブジェクトの種類<5>
のみが必要です。スケーリングされたオブジェクトの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- オプション: 「ワークロードのカスタムメトリクスオートスケーラーの一時停止」セクションで説明されているように、Custom Metrics Autoscaler Operator がレプリカを指定された値にスケーリングし、自動スケーリングを停止するよう指定します。
- 2
- このカスタムメトリクスオートスケーラーの名前を指定します。
- 3
- オプション: ターゲットリソースの API バージョンを指定します。デフォルトは
apps/v1
です。 - 4
- スケーリングするオブジェクトの名前を指定します。
- 5
kind
をDeployment
、StatefulSet
またはCustomResource
として指定します。- 6
- オプション: カスタムメトリクスオートスケーラーがシークレットなどを保持する環境変数を取得する、ターゲットリソース内のコンテナーの名前を指定します。デフォルトは
.spec.template.spec.containers[0]
です。 - 7
- オプション:
minReplicaCount
が0
に設定されている場合、最後のトリガーが報告されてからデプロイメントを0
にスケールバックするまでの待機時間を秒単位で指定します。デフォルトは300
です。 - 8
- オプション: スケールアップ時のレプリカの最大数を指定します。デフォルトは
100
です。 - 9
- オプション: スケールダウン時のレプリカの最小数を指定します。
- 10
- オプション: 「監査ログの設定」セクションで説明されているように、監査ログのパラメーターを指定します。
- 11
- オプション:
failureThreshold
パラメーターで定義された回数だけスケーラーがソースからメトリクスを取得できなかった場合に、フォールバックするレプリカの数を指定します。フォールバック動作の詳細は、KEDA のドキュメント を参照してください。 - 12
- オプション:フォールバック時に使用するレプリカ数を指定します。以下のオプションのいずれかを入力するか、パラメーターは省略します。
-
fallback.replicas
パラメーターで指定されたレプリカ数を使用するには、static
を入力します。 -
currentReplicas
を入力して、現在のレプリカの数を維持します。 -
currentReplicasIfHigher
を入力して、その数がfallback.replicas
パラメーターよりも大きい場合、そのレプリカ数を維持します。現在の数が低い場合は、fallback.replicas
値を使用します。 -
currentReplicasIfLower
を入力して、その数がfallback.replicas
パラメーターよりも少ない場合には、レプリカの現在の数を維持します。現在の数が高い場合は、fallback.replicas
値を使用します。
-
- 13
- オプション: 各トリガーをチェックする間隔を秒単位で指定します。デフォルトは
30
です。 - 14
- オプション: スケーリングされたオブジェクトが削除された後に、ターゲットリソースを元のレプリカ数にスケールバックするかどうかを指定します。デフォルトは
false
で、スケーリングされたオブジェクトが削除されたときのレプリカ数をそのまま保持します。 - 15
- オプション: Horizontal Pod Autoscaler の名前を指定します。デフォルトは
keda-hpa-{scaled-object-name}
です。 - 16
- オプション: 「スケーリングポリシー」セクションで説明されているように、Pod をスケールアップまたはスケールダウンするレートを制御するために使用するスケーリングポリシーを指定します。
- 17
- 「カスタムメトリクスオートスケーラートリガーについて」セクションで説明されているように、スケーリングの基準として使用するトリガーを指定します。この例では、OpenShift Container Platform モニタリングを使用します。
- 18
- オプション: トリガー認証またはクラスタートリガー認証を指定します。詳細は、関連情報 セクションの カスタムメトリクスオートスケーラー認証について を参照してください。
-
トリガー認証を使用するには、
TriggerAuthentication
と入力します。これがデフォルトです。 -
クラスタートリガー認証を使用するには、
ClusterTriggerAuthentication
と入力します。
-
トリガー認証を使用するには、
次のコマンドを実行して、カスタムメトリクスオートスケーラーを作成します。
oc create -f <filename>.yaml
$ oc create -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
コマンド出力を表示して、カスタムメトリクスオートスケーラーが作成されたことを確認します。
oc get scaledobject <scaled_object_name>
$ oc get scaledobject <scaled_object_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME SCALETARGETKIND SCALETARGETNAME MIN MAX TRIGGERS AUTHENTICATION READY ACTIVE FALLBACK AGE scaledobject apps/v1.Deployment example-deployment 0 50 prometheus prom-triggerauthentication True True True 17s
NAME SCALETARGETKIND SCALETARGETNAME MIN MAX TRIGGERS AUTHENTICATION READY ACTIVE FALLBACK AGE scaledobject apps/v1.Deployment example-deployment 0 50 prometheus prom-triggerauthentication True True True 17s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力の次のフィールドに注意してください。
-
TRIGGERS
: 使用されているトリガーまたはスケーラーを示します。 -
AUTHENTICATION
: 使用されているトリガー認証の名前を示します。 READY
: スケーリングされたオブジェクトがスケーリングを開始する準備ができているかどうかを示します。-
True
の場合、スケーリングされたオブジェクトの準備は完了しています。 -
False
の場合、作成したオブジェクトの 1 つ以上に問題があるため、スケーリングされたオブジェクトの準備は完了していません。
-
ACTIVE
: スケーリングが行われているかどうかを示します。-
True
の場合、スケーリングが行われています。 -
False
の場合、メトリクスがないか、作成したオブジェクトの 1 つ以上に問題があるため、スケーリングは行われていません。
-
FALLBACK
: カスタムメトリクスオートスケーラーがソースからメトリクスを取得できるかどうかを示します。-
False
の場合、カスタムメトリクスオートスケーラーはメトリクスを取得しています。 -
True
の場合、メトリクスがないか、作成したオブジェクトの 1 つ以上に問題があるため、カスタムメトリクスオートスケーラーはメトリクスを取得しています。
-
-
3.10.2. ジョブへのカスタムメトリックオートスケーラーの追加 リンクのコピーリンクがクリップボードにコピーされました!
任意の Job
オブジェクトに対してカスタムメトリックオートスケーラーを作成できます。
スケーリングされたジョブを使用したスケーリングはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
前提条件
- Custom Metrics Autoscaler Operator をインストールしている。
手順
以下のような YAML ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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 create -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
コマンド出力を表示して、カスタムメトリクスオートスケーラーが作成されたことを確認します。
oc get scaledjob <scaled_job_name>
$ oc get scaledjob <scaled_job_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME MAX TRIGGERS AUTHENTICATION READY ACTIVE AGE scaledjob 100 prometheus prom-triggerauthentication True True 8s
NAME MAX TRIGGERS AUTHENTICATION READY ACTIVE AGE scaledjob 100 prometheus prom-triggerauthentication True True 8s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力の次のフィールドに注意してください。
-
TRIGGERS
: 使用されているトリガーまたはスケーラーを示します。 -
AUTHENTICATION
: 使用されているトリガー認証の名前を示します。 READY
: スケーリングされたオブジェクトがスケーリングを開始する準備ができているかどうかを示します。-
True
の場合、スケーリングされたオブジェクトの準備は完了しています。 -
False
の場合、作成したオブジェクトの 1 つ以上に問題があるため、スケーリングされたオブジェクトの準備は完了していません。
-
ACTIVE
: スケーリングが行われているかどうかを示します。-
True
の場合、スケーリングが行われています。 -
False
の場合、メトリクスがないか、作成したオブジェクトの 1 つ以上に問題があるため、スケーリングは行われていません。
-
-