2.4.6.2. 特定の CPU 値に対する Horizontal Pod Autoscaler の作成
OpenShift Container Platform CLI を使用すると、ターゲット CPU と Pod 制限を持つ HorizontalPodAutoscaler オブジェクトを作成することで、特定の CPU 値に基づいて既存のオブジェクトを自動的にスケーリングする Horizontal Pod Autoscaler (HPA) を作成できます。HPA は、指定した CPU 使用率を維持するために、そのオブジェクトに関連付けられた Pod をスケーリングします。
他のオブジェクトによって提供される特定の機能または動作が必要でない限り、Deployment オブジェクトまたは ReplicaSet オブジェクトを使用します。
前提条件
Horizontal Pod Autoscaler を使用するには、クラスターの管理者はクラスターメトリクスを適切に設定している必要があります。メトリクスが設定されているかどうかは、oc describe PodMetrics <pod-name> コマンドを使用して判断できます。メトリクスが設定されている場合、出力は以下の Usage の下にある Cpu と Memory のように表示されます。
$ oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
出力例
Name: openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
Namespace: openshift-kube-scheduler
Labels: <none>
Annotations: <none>
API Version: metrics.k8s.io/v1beta1
Containers:
Name: wait-for-host-port
Usage:
Memory: 0
Name: scheduler
Usage:
Cpu: 8m
Memory: 45440Ki
Kind: PodMetrics
Metadata:
Creation Timestamp: 2019-05-23T18:47:56Z
Self Link: /apis/metrics.k8s.io/v1beta1/namespaces/openshift-kube-scheduler/pods/openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
Timestamp: 2019-05-23T18:47:56Z
Window: 1m0s
Events: <none>
手順
既存のオブジェクトに対して次のような YAML ファイルを作成します。
apiVersion: autoscaling/v21 kind: HorizontalPodAutoscaler metadata: name: cpu-autoscale2 namespace: default spec: scaleTargetRef: apiVersion: apps/v13 kind: Deployment4 name: example5 minReplicas: 16 maxReplicas: 107 metrics:8 - type: Resource resource: name: cpu9 target: type: AverageValue10 averageValue: 500m11 - 1
autoscaling/v2API を使用します。- 2
- この Horizontal Pod Autoscaler オブジェクトの名前を指定します。
- 3
- スケーリングするオブジェクトの API バージョンを指定します。
-
Deployment、ReplicaSet、Statefulsetオブジェクトの場合は、apps/v1を使用します。 -
ReplicationControllerの場合は、v1を使用します。 -
DeploymentConfigの場合は、apps.openshift.io/v1を使用します。
-
- 4
- オブジェクトのタイプを指定します。オブジェクトは、
Deployment、DeploymentConfig/dc、ReplicaSet/rs、ReplicationController/rc、またはStatefulSetである必要があります。 - 5
- スケーリングするオブジェクトの名前を指定します。オブジェクトが存在する必要があります。
- 6
- スケールダウン時のレプリカの最小数を指定します。
- 7
- スケールアップ時のレプリカの最大数を指定します。
- 8
- メモリー使用量には、
metricsパラメーターを使用します。 - 9
- CPU 使用率には
cpuを指定します。 - 10
AverageValueに設定します。- 11
- ターゲットに設定された CPU 値で
averageValueに設定します。
Horizontal Pod Autoscaler を作成します。
$ oc create -f <file-name>.yaml
検証
Horizontal Pod Autoscaler が作成されたことを確認します。
$ oc get hpa cpu-autoscale出力例
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE cpu-autoscale Deployment/example 173m/500m 1 10 1 20m