25.4. 自動スケーリング
Horizontal Pod Autoscaler を作成することで、実行する Pod の最小数と最大数を指定するだけでなく、Pod がターゲットに設定する CPU の使用率 または メモリー使用率 を指定することができます。
Horizontal Pod Autoscaler の作成後に、これは Heapster で Pod のメトリクスのクエリーを試行します。Heapster が初期メトリクスを取得するまでに 1 分から 2 分の時間がかかる場合があります。
メトリクスが Heapster で利用可能になると、Horizontal Pod Autoscaler は必要なメトリクスの使用率に対する現在のメトリクスの使用率の割合を計算し、随時スケールアップまたはスケールダウンを実行します。スケーリングは一定間隔で実行されますが、メトリクスが Heapster に移されるまでに 1 分から 2 分の時間がかかる場合があります。
レプリケーションコントローラーの場合、このスケーリングはレプリケーションコントローラーのレプリカに直接対応します。デプロイメント設定の場合、スケーリングはデプロイメント設定のレプリカ数に直接対応します。自動スケーリングは Complete
フェーズの最新デプロイメントにのみ適用されることに注意してください。
OpenShift Container Platform はリソースに自動的に対応し、起動時などのリソースの使用が急増した場合など必要のない自動スケーリングを防ぎます。unready
状態の Pod には、スケールアップ時の使用率が 0 CPU
と指定され、Autoscaler はスケールダウン時にはこれらの Pod を無視します。既知のメトリクスのない Pod にはスケールアップ時の使用率が 0% CPU
、スケールダウン時に 100% CPU
となります。これにより、HPA の決定時に安定性が増します。この機能を使用するには、readiness チェック を設定して新規 Pod が使用可能であるかどうかを判別します。
25.4.1. CPU 使用率の自動スケーリング
CPU 使用率について自動スケーリングを行う際に、oc autoscale
コマンドを使用し、実行する必要のある Pod の最大数と Pod がターゲットとして設定する必要のある平均 CPU 使用率を指定することができます。オプションとして Pod の最小数と Pod がターゲットとする平均の CPU 使用率を指定できます。指定しない場合は、OpenShift Container Platform サーバーからのデフォルト値が指定されます。
以下に例を示します。
$ oc autoscale dc/frontend --max 10 --cpu-percent=80 deploymentconfig "frontend" autoscaled
このサンプルコマンドにより、以下の定義を持つ既存の DeploymentConfig の Horizontal Pod Autoscaler が作成されます。
Horizontal Pod Autoscaler オブジェクト定義
apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: frontend 1 spec: scaleTargetRef: apiVersion: apps.openshift.io/v1 2 kind: DeploymentConfig 3 name: frontend 4 subresource: scale minReplicas: 1 5 maxReplicas: 10 6 targetCPUUtilizationPercentage: 80 7
- 1
- この Horizontal Pod Autoscaler オブジェクトの名前。
- 2
- スケーリングするオブジェクトの API バージョン:
-
ReplicationController については、
v1
を使用します。 -
DeploymentConfig については、
apps.openshift.io/v1
を使用します。
-
ReplicationController については、
- 3
- スケーリングするオブジェクトの種類 (
ReplicationController
またはDeploymentConfig
のいずれか)。 - 4
- スケーリングする既存オブジェクトの名前。
- 5
- スケールダウン時のレプリカの最小数。デフォルトは
1
です。 - 6
- スケールアップ時のレプリカの最大数。
- 7
- 各 Pod が使用していることが期待される要求された CPU のパーセンテージ。
または、oc autoscale
コマンドは Horizontal Pod Autoscaler の v2beta1
バージョンを使用する際に以下の定義を使用して Horizontal Pod Autoscaler を作成します。
apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: name: hpa-resource-metrics-cpu 1 spec: scaleTargetRef: apiVersion: v1 2 kind: ReplicationController 3 name: hello-hpa-cpu 4 minReplicas: 1 5 maxReplicas: 10 6 metrics: - type: Resource resource: name: cpu targetAverageUtilization: 50 7
- 1
- この Horizontal Pod Autoscaler オブジェクトの名前。
- 2
- スケーリングするオブジェクトの API バージョン:
-
ReplicationController については、
v1
を使用します。 -
DeploymentConfig については、
apps.openshift.io/v1
を使用します。
-
ReplicationController については、
- 3
- スケーリングするオブジェクトの種類 (
ReplicationController
またはDeploymentConfig
のいずれか)。 - 4
- スケーリングする既存オブジェクトの名前。
- 5
- スケールダウン時のレプリカの最小数。デフォルトは
1
です。 - 6
- スケールアップ時のレプリカの最大数。
- 7
- 各 Pod が使用していることが予想される要求された CPU の平均のパーセンテージ。