2.4.6. CLI を使用して Horizontal Pod Autoscaler を作成する
OpenShift Container Platform CLI を使用して Horizontal Pod Autoscaler (HPA) を作成すると、既存の Deployment、DeploymentConfig、ReplicaSet、ReplicationController、または StatefulSet オブジェクトを自動的にスケーリングできます。HPA は、指定した CPU またはメモリーリソースを維持するために、そのオブジェクトに関連付けられた Pod をスケーリングします。
次のセクションで説明するように、リソース使用量のパーセンテージまたは特定の値を指定することにより、CPU またはメモリーの使用量に基づいて自動スケーリングできます。
HPA は、すべての Pod にわたって指定されたリソースの使用を維持するために、レプリカの数を最小数と最大数の間で増減します。
2.4.6.1. CPU 使用率のパーセンテージに応じて Horizontal Pod Autoscaler を作成する リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform CLI を使用すると、CPU 使用率に基づいて既存のオブジェクトを自動的にスケーリングする Horizontal Pod Autoscaler (HPA) を作成できます。HPA は、指定した CPU 使用率を維持するために、そのオブジェクトに関連付けられた Pod をスケーリングします。
CPU 使用率のパーセンテージを自動スケーリングする場合、oc autoscale コマンドを使用して、特定の時点で実行する Pod の最小数と最大数、および Pod がターゲットとする平均 CPU 使用率を指定できます。最小値を指定しない場合、Pod には OpenShift Container Platform サーバーからのデフォルト値が付与されます。
他のオブジェクトによって提供される特定の機能または動作が必要でない限り、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>
手順
既存のオブジェクトに対して
HorizontalPodAutoscalerオブジェクトを作成します。$ oc autoscale <object_type>/<name> \1 --min <number> \2 --max <number> \3 --cpu-percent=<percent>4 - 1
- 自動スケーリングするオブジェクトのタイプと名前を指定します。オブジェクトが存在し、
Deployment、DeploymentConfig/dc、ReplicaSet/rs、ReplicationController/rc、またはStatefulSetである必要があります。 - 2
- オプション: スケールダウン時のレプリカの最小数を指定します。
- 3
- スケールアップ時のレプリカの最大数を指定します。
- 4
- すべての Pod における CPU 使用率の目標平均値を、要求された CPU に対するパーセンテージとして指定します。指定しない場合または負の値の場合、デフォルトの自動スケーリングポリシーが使用されます。
たとえば、次のコマンドは
hello-nodeデプロイメントオブジェクトの自動スケーリングを示しています。最初のデプロイメントでは 3 つの Pod が必要です。HPA オブジェクトは、最小値を 5 に増やします。Pod の CPU 使用率が 75% に達すると、Pod は 7 まで増加します。$ oc autoscale deployment/hello-node --min=5 --max=7 --cpu-percent=75
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