Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

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 には 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 を使用します。
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 を使用します。
3
スケーリングするオブジェクトの種類 (ReplicationController またはDeploymentConfig のいずれか)。
4
スケーリングする既存オブジェクトの名前。
5
スケールダウン時のレプリカの最小数。デフォルトは 1 です。
6
スケールアップ時のレプリカの最大数。
7
各 Pod が使用していることが予想される要求された CPU の平均のパーセンテージ。