7.2. Cluster Autoscaler の設定
まず Cluster Autoscaler をデプロイし、リソースの自動スケーリングを OpenShift Container Platform クラスターで管理します。
Cluster Autoscaler のスコープはクラスター全体に設定されるため、クラスター用に 1 つの Cluster Autoscaler のみを作成できます。
7.2.1. Cluster Autoscaler リソース定義
この ClusterAutoscaler
リソース定義は、Cluster Autoscaler のパラメーターおよびサンプル値を表示します。
apiVersion: "autoscaling.openshift.io/v1" kind: "ClusterAutoscaler" metadata: name: "default" spec: podPriorityThreshold: -10 1 resourceLimits: maxNodesTotal: 24 2 cores: min: 8 3 max: 128 4 memory: min: 4 5 max: 256 6 gpus: - type: <gpu_type> 7 min: 0 8 max: 16 9 logVerbosity: 4 10 scaleDown: 11 enabled: true 12 delayAfterAdd: 10m 13 delayAfterDelete: 5m 14 delayAfterFailure: 30s 15 unneededTime: 5m 16 utilizationThreshold: "0.4" 17
- 1
- Cluster Autoscaler に追加のノードをデプロイさせるために Pod が超えている必要のある優先順位を指定します。32 ビットの整数値を入力します。
podPriorityThreshold
値は、各 Pod に割り当てるPriorityClass
の値と比較されます。 - 2
- デプロイするノードの最大数を指定します。この値は、Autoscaler が制御するマシンだけでなく、クラスターにデプロイされるマシンの合計数です。この値は、すべてのコントロールプレーンおよびコンピュートマシン、および
MachineAutoscaler
リソースに指定するレプリカの合計数に対応するのに十分な大きさの値であることを確認します。 - 3
- クラスターにデプロイするコアの最小数を指定します。
- 4
- クラスターにデプロイするコアの最大数を指定します。
- 5
- クラスターのメモリーの最小量 (GiB 単位) を指定します。
- 6
- クラスターのメモリーの最大量 (GiB 単位) を指定します。
- 7
- オプション:GPU 対応ノードをデプロイするように Cluster Autoscaler を設定するには、使用する GPU
タイプ
を表す type 値を指定します。たとえば、nvidia T4 GPU を表現するためにnvidia-t4
を使用し、A10G GPU の場合はnvidia-a10g
を表すことができます。注記type
の値は、そのタイプの GPU 対応ノードを管理するマシンセットのspec.template.spec.metadata.labels[cluster-api/accelerator]
ラベルの値と一致する必要があります。この値はマシンセットのラベルとして使用するため、英数字、-
、_
、または.
で設定されており、英数字で開始および終了する必要があります。 - 8
- クラスターにデプロイする指定されたタイプの GPU の最小数を指定します。
- 9
- クラスターにデプロイする指定されたタイプの GPU の最大数を指定します。
- 10
- ロギングの詳細レベルを
0
から10
の間で指定します。次のログレベルのしきい値は、ガイダンスとして提供されています。-
1
: (デフォルト) 変更に関する基本情報。 -
4
: 一般的な問題をトラブルシューティングするためのデバッグレベルの詳細度。 -
9
: 広範なプロトコルレベルのデバッグ情報。
値を指定しない場合は、デフォルト値の
1
が使用されます。 -
- 11
- 12
- Cluster Autoscaler が不必要なノードを削除できるかどうかを指定します。
- 13
- オプション: ノードが最後に 追加 されてからノードを削除するまで待機する期間を指定します。値を指定しない場合、デフォルト値の
10m
が使用されます。 - 14
- オプション: ノードが最後に 削除 されてからノードを削除するまで待機する期間を指定します。値を指定しない場合、デフォルト値の
0s
が使用されます。 - 15
- オプション: スケールダウンが失敗してからノードを削除するまで待機する期間を指定します。値を指定しない場合、デフォルト値の
3m
が使用されます。 - 16
- オプション: 不要なノードが削除の対象となるまでの期間を指定します。値を指定しない場合、デフォルト値の
10m
が使用されます。 - 17
- オプション: node utilization level を指定します。この使用率レベルを下回るノードは、削除の対象となります。
ノード使用率は、要求されたリソースをそのノードに割り当てられたリソースで割ったもので、
"0"
より大きく"1"
より小さい値でなければなりません。値を指定しない場合、Cluster Autoscaler は 50% の使用率に対応するデフォルト値"0.5"
を使用します。この値は文字列として表現する必要があります。
スケーリング操作の実行時に、Cluster Autoscaler は、デプロイするコアの最小および最大数、またはクラスター内のメモリー量などの ClusterAutoscaler
リソース定義に設定された範囲内に残ります。ただし、Cluster Autoscaler はそれらの範囲内に留まるようクラスターの現在の値を修正しません。
Cluster Autoscaler がノードを管理しない場合でも、最小および最大の CPU、メモリー、および GPU の値は、クラスター内のすべてのノードのこれらのリソースを計算することによって決定されます。たとえば、Cluster Autoscaler がコントロールプレーンノードを管理しない場合でも、コントロールプレーンノードはクラスターのメモリーの合計に考慮されます。
7.2.2. Cluster Autoscaler のデプロイ
Cluster Autoscaler をデプロイするには、ClusterAutoscaler
リソースのインスタンスを作成します。
手順
-
カスタムリソース定義を含む
ClusterAutoscaler
リソースの YAML ファイルを作成します。 以下のコマンドを実行して、クラスター内にカスタムリソースを作成します。
$ oc create -f <filename>.yaml 1
- 1
<filename>
はカスタムリソースファイルの名前です。
次のステップ
- Cluster Autoscaler の設定後に、1 つ以上の Machine Autoscaler を設定する 必要があります。