2.4. Horizontal Pod Autoscaler での Pod の自動スケーリング
開発者として、Horizontal Pod Autoscaler (HPA) を使用して、レプリケーションコントローラーに属する Pod から収集されるメトリクスまたはデプロイメント設定に基づき、OpenShift Container Platform がレプリケーションコントローラーまたはデプロイメント設定のスケールを自動的に増減する方法を指定できます。HPA は、任意のデプロイメント、デプロイメント設定、レプリカセット、レプリケーションコントローラー、またはステートフルセットに対して作成できます。
カスタムメトリクスに基づいて Pod をスケーリングする方法の詳細は、カスタムメトリクスに基づいて Pod を自動的にスケーリングする を参照してください。
					他のオブジェクトが提供する特定の機能や動作が必要な場合を除き、Deployment オブジェクトまたは ReplicaSet オブジェクトを使用することを推奨します。これらのオブジェクトの詳細については、Understanding Deployment and DeploymentConfig objects を参照してください。
				
2.4.1. Horizontal Pod Autoscaler について
Horizontal Pod Autoscaler を作成して、実行する Pod の最小数と最大数、および Pod がターゲットとする CPU 使用量またはメモリー使用量を指定できます。
Horizontal Pod Autoscaler を作成すると、OpenShift Container Platform は Pod 上の CPU またはメモリー、あるいはその両方のリソースメトリクスのクエリーを開始します。これらのメトリクスが利用可能な場合、Horizontal Pod Autoscaler は、現在のメトリクス使用量と意図したメトリクス使用量の比率を計算し、必要に応じてスケールアップまたはスケールダウンします。クエリーとスケーリングは一定間隔で実行されますが、メトリックが利用可能になるでに 1 分から 2 分の時間がかかる場合があります。
					レプリケーションコントローラーの場合、このスケーリングはレプリケーションコントローラーのレプリカに直接対応します。デプロイメントの場合、スケーリングはデプロイメントのレプリカ数に直接対応します。自動スケーリングは Complete フェーズの最新デプロイメントにのみ適用されることに注意してください。
				
					OpenShift Container Platform はリソースに自動的に対応し、起動時などのリソースの使用が急増した場合など必要のない自動スケーリングを防ぎます。unready 状態の Pod には、スケールアップ時の使用率が 0 CPU と指定され、Autoscaler はスケールダウン時にはこれらの Pod を無視します。既知のメトリックのない Pod にはスケールアップ時の使用率が 0% CPU、スケールダウン時に 100% CPU となります。これにより、HPA の決定時に安定性が増します。この機能を使用するには、readiness チェックを設定して新規 Pod が使用可能であるかどうかを判別します。
				
Horizontal Pod Autoscaler を使用するには、クラスターの管理者はクラスターメトリックを適切に設定している必要があります。
以下のメトリックは Horizontal Pod Autoscaler でサポートされています。
| メトリクス | 説明 | API バージョン | 
|---|---|---|
| CPU の使用率 | 使用されている CPU コアの数。これを使用して、Pod が要求した CPU の割合を計算できます。 | 
									 | 
| メモリーの使用率 | 使用されているメモリーの量。これを使用して、Pod が要求したメモリーの割合を計算できます。 | 
									 | 
メモリーベースの自動スケーリングでは、メモリー使用量がレプリカ数と比例して増減する必要があります。平均的には以下のようになります。
- レプリカ数が増えると、Pod ごとのメモリー (作業セット) の使用量が全体的に減少します。
- レプリカ数が減ると、Pod ごとのメモリー使用量が全体的に増加します。
OpenShift Container Platform Web コンソールを使用して、アプリケーションのメモリー動作を確認し、メモリーベースの自動スケーリングを使用する前にアプリケーションがそれらの要件を満たしていることを確認します。
					以下の例は、image-registry Deployment オブジェクトの自動スケーリングを示しています。最初のデプロイメントでは 3 つの Pod が必要です。HPA オブジェクトは、最小値を 5 に増やします。Pod の CPU 使用率が 75% に達すると、Pod は 7 まで増加します。
				
oc autoscale deployment/image-registry --min=5 --max=7 --cpu-percent=75
$ oc autoscale deployment/image-registry --min=5 --max=7 --cpu-percent=75出力例
horizontalpodautoscaler.autoscaling/image-registry autoscaled
horizontalpodautoscaler.autoscaling/image-registry autoscaledminReplicas が 3 に設定された image-registry Deployment オブジェクトのサンプル HPA
- デプロイメントの新しい状態を表示します。 - oc get deployment image-registry - $ oc get deployment image-registry- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - デプロイメントには 5 つの Pod があります。 - 出力例 - NAME REVISION DESIRED CURRENT TRIGGERED BY image-registry 1 5 5 config - NAME REVISION DESIRED CURRENT TRIGGERED BY image-registry 1 5 5 config- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
2.4.2. HPA はどのように機能するか
Horizontal Pod Autoscaler (HPA) は、Pod オートスケーリングの概念を拡張するものです。HPA を使用すると、負荷分散されたノードグループを作成および管理できます。HPA は、所定の CPU またはメモリーのしきい値を超えると、Pod 数を自動的に増減させます。
図2.1 HPA の高レベルのワークフロー
HPA は、Kubernetes 自動スケーリング API グループの API リソースです。オートスケーラは制御ループとして動作し、同期期間のデフォルトは 15 秒です。この期間中、コントローラーマネージャーは、HPA の YAML ファイルに定義されている CPU、メモリー使用率、またはその両方を照会します。コントローラーマネージャーは、HPA の対象となる Pod ごとに、CPU やメモリーなどの Pod 単位のリソースメトリックをリソースメトリック API から取得します。
					使用率の目標値が設定されている場合、コントローラーは、各 Pod のコンテナーにおける同等のリソース要求のパーセンテージとして使用率の値を計算します。次に、コントローラーは、対象となるすべての Pod の使用率の平均を取り、必要なレプリカの数をスケーリングするために使用される比率を生成します。HPA は、メトリクスサーバーが提供する metrics.k8s.io からメトリクスを取得するよう設定されています。メトリック評価は動的な性質を持っているため、レプリカのグループに対するスケーリング中にレプリカの数が変動する可能性があります。
				
HPA を実装するには、対象となるすべての Pod のコンテナーにリソース要求が設定されている必要があります。
2.4.3. 要求と制限について
スケジューラーは、Pod 内のコンテナーに対して指定したリソース要求をもとに、どのノードに Pod を配置するかを決定します。kubelet は、コンテナーに指定されたリソース制限を適用して、コンテナーが指定された制限を超えて使用できないようにします。kubelet は、そのコンテナーが使用するために、そのシステムリソースの要求量も予約します。
リソースメトリックの使用方法
Pod の仕様では、CPU やメモリーなどのリソース要求を指定する必要があります。HPA はこの仕様を使用してリソース使用率を決定し、ターゲットを増減させます。
たとえば、HPA オブジェクトは次のメトリックソースを使用します。
この例では、HPA はスケーリングターゲットの Pod の平均使用率を 60% に維持しています。使用率とは、Pod の要求リソースに対する現在のリソース使用量の比率です。
2.4.4. ベストプラクティス
最適なパフォーマンスを得るには、すべての Pod のリソース要求を設定します。頻繁なレプリカの変動を防ぐには、クールダウン期間を設定します。
- すべての Pod にリソース要求が設定されていること
- HPA は、OpenShift Container Platform クラスター内の Pod の観測された CPU またはメモリー使用量の値に基づいてスケーリングの決定を行います。使用率の値は、各 Pod のリソース要求のパーセンテージとして計算されます。リソース要求値が欠落していると、HPA の最適性能に影響を与える可能性があります。
詳細は、「リソース要求および制限について」を参照してください。
- クールダウン期間の設定
- 
								Horizontal Pod Autoscaling 中に、時間差なしでイベントが急速にスケーリングされる可能性があります。頻繁なレプリカの変動を防ぐために、クールダウン期間を設定します。stabilizationWindowSecondsフィールドを設定することで、クールダウン期間を指定できます。安定化ウィンドウは、スケーリングに使用するメトリックが変動し続ける場合に、レプリカ数の変動を制限するために使用されます。自動スケーリングアルゴリズムは、このウィンドウを使用して以前の必要な状態を推測し、ワークロードスケールの不要な変更を回避します。
					たとえば、scaleDown フィールドに安定化ウィンドウが指定されています。
				
behavior:
  scaleDown:
    stabilizationWindowSeconds: 300
behavior:
  scaleDown:
    stabilizationWindowSeconds: 300前の例では、過去 5 分間のすべての意図された状態が考慮されます。これにより、ローリング最大値が近似され、スケーリングアルゴリズムによって Pod が頻繁に削除され、その直後に同等の Pod が再作成されるという事態が回避されます。
詳細は、「スケーリングポリシー」を参照してください。
2.4.4.1. スケーリングポリシー
						autoscaling/v2 API を使用して、Horizontal Pod Autoscaler に スケーリングポリシー を追加します。スケーリングポリシーは、OpenShift Container Platform の Horizontal Pod Autoscaler (HPA) が Pod をスケーリングする方法を制御します。スケーリングポリシーを使用すると、特定の期間にスケーリングするように特定の数または特定のパーセンテージを設定して、HPA が Pod をスケールアップまたはスケールダウンするレートを制限できます。安定化ウィンドウ を定義することもできます。これはメトリクスが変動する場合に、先に計算される必要な状態を使用してスケーリングを制御します。同じスケーリング方向に対して複数のポリシーを作成し、変更の量に基づいて使用するポリシーを決定できます。タイミングが調整された反復によりスケーリングを制限することもできます。HPA は反復時に Pod をスケーリングし、その後の反復で必要に応じてスケーリングを実行します。
					
スケーリングポリシーを適用するサンプル HPA オブジェクト
- 1
- scaleDownまたは- scaleUpのいずれかのスケーリングポリシーの方向を指定します。この例では、スケールダウンのポリシーを作成します。
- 2
- スケーリングポリシーを定義します。
- 3
- ポリシーが反復時に特定の Pod の数または Pod のパーセンテージに基づいてスケーリングするかどうかを決定します。デフォルト値はpodsです。
- 4
- 反復ごとに Pod の数または Pod のパーセンテージのいずれかでスケーリングの量を制限します。Pod 数でスケールダウンする際のデフォルト値はありません。
- 5
- スケーリングの反復の長さを決定します。デフォルト値は15秒です。
- 6
- パーセンテージでのスケールダウンのデフォルト値は 100% です。
- 7
- 複数のポリシーが定義されている場合に、最初に使用するポリシーを決定します。最大限の変更を許可するポリシーを使用するようにMaxを指定するか、最小限の変更を許可するポリシーを使用するようにMinを指定するか、HPA がポリシーの方向でスケーリングしないようにDisabledを指定します。デフォルト値はMaxです。
- 8
- HPA が必要な状態を確認する期間を決定します。デフォルト値は0です。
- 9
- この例では、スケールアップのポリシーを作成します。
- 10
- Pod 数によるスケールアップの量を制限します。Pod 数をスケールアップするためのデフォルト値は 4% です。
- 11
- Pod のパーセンテージによるスケールアップの量を制限します。パーセンテージでスケールアップするためのデフォルト値は 100% です。
スケールダウンポリシーの例
						この例では、Pod の数が 40 より大きい場合、パーセントベースのポリシーがスケールダウンに使用されます。このポリシーでは、selectPolicy による要求により、より大きな変更が生じるためです。
					
						80 の Pod レプリカがある場合、初回の反復で HPA は Pod を 8 Pod 減らします。これは、1 分間 (periodSeconds: 60) の (type: Percent および value: 10 パラメーターに基づく) 80 Pod の 10% に相当します。次回の反復では、Pod 数は 72 になります。HPA は、残りの Pod の 10% が 7.2 であると計算し、これを 8 に丸め、8 Pod をスケールダウンします。後続の反復ごとに、スケーリングされる Pod 数は残りの Pod 数に基づいて再計算されます。Pod の数が 40 未満になると、Pod ベースの数がパーセントベースの数よりも大きいため、Pod ベースのポリシーが適用されます。HPA は、残りのレプリカ (minReplicas) が 20 になるまで、30 秒 (periodSeconds: 30) で一度に 4 Pod (type: Pods および value: 4) を減らします。
					
						selectPolicy: Disabled パラメーターは HPA による Pod のスケールアップを防ぎます。必要な場合は、レプリカセットまたはデプロイメントセットでレプリカの数を調整して手動でスケールアップできます。
					
						設定されている場合、oc edit コマンドを使用してスケーリングポリシーを表示できます。
					
oc edit hpa hpa-resource-metrics-memory
$ oc edit hpa hpa-resource-metrics-memory出力例
2.4.5. Web コンソールを使用した Horizontal Pod Autoscaler の作成
					Web コンソールから、Deployment または DeploymentConfig オブジェクトで実行する Pod の最小および最大数を指定する Horizontal Pod Autoscaler (HPA) を作成できます。Pod がターゲットに設定する CPU またはメモリー使用量を定義することもできます。
				
HPA は、Operator がサポートするサービス、Knative サービス、または Helm チャートの一部であるデプロイメントに追加することはできません。
手順
Web コンソールで HPA を作成するには、以下を実行します。
- Topology ビューで、ノードをクリックしてサイドペインを表示します。
- Actions ドロップダウンリストから、Add HorizontalPodAutoscaler を選択して Add HorizontalPodAutoscaler フォームを開きます。 - 図2.2 HorizontalPodAutoscaler の追加 
- Add HorizontalPodAutoscaler フォームから、名前、最小および最大の Pod 制限、CPU およびメモリーの使用状況を定義し、Save をクリックします。 注記- CPU およびメモリー使用量の値のいずれかが見つからない場合は、警告が表示されます。 
2.4.5.1. Web コンソールを使用して Horizontal Pod Autoscaler を編集する
						Web コンソールから、Deployment または DeploymentConfig オブジェクトで実行する Pod の最小および最大数を指定する Horizontal Pod Autoscaler (HPA) を変更できます。Pod がターゲットに設定する CPU またはメモリー使用量を定義することもできます。
					
手順
- Topology ビューで、ノードをクリックしてサイドペインを表示します。
- Actions ドロップダウンリストから、Edit HorizontalPodAutoscaler を選択し、Horizontal Pod Autoscaler フォームを開きます。
- Edit Horizontal Pod Autoscaler フォームから、最小および最大の Pod 制限および CPU およびメモリー使用量を編集し、Save をクリックします。
Web コンソールで Horizontal Pod Autoscaler を作成または編集する際に、Form view から YAML view に切り替えることができます。
2.4.5.2. Web コンソールを使用して Horizontal Pod Autoscaler を削除する
Web コンソールで Horizontal Pod Autoscaler (HPA) を削除できます。
手順
- Topology ビューで、ノードをクリックし、サイドパネルを表示します。
- Actions ドロップダウンリストから、Remove HorizontalPodAutoscaler を選択します。
- 確認ウィンドウで、Remove をクリックして HPA を削除します。
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
$ oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal出力例
手順
- 既存のオブジェクトに対して - HorizontalPodAutoscalerオブジェクトを作成します。- oc autoscale <object_type>/<name> \ --min <number> \ --max <number> \ --cpu-percent=<percent> - $ oc autoscale <object_type>/<name> \- 1 - --min <number> \- 2 - --max <number> \- 3 - --cpu-percent=<percent>- 4 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 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 - $ oc autoscale deployment/hello-node --min=5 --max=7 --cpu-percent=75- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Horizontal Pod Autoscaler を作成します。 - oc create -f <file-name>.yaml - $ oc create -f <file-name>.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- Horizontal Pod Autoscaler が作成されていることを確認します。 - oc get hpa cpu-autoscale - $ oc get hpa cpu-autoscale- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE cpu-autoscale Deployment/example 173m/500m 1 10 1 20m - NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE cpu-autoscale Deployment/example 173m/500m 1 10 1 20m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
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
$ oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal出力例
手順
- 既存のオブジェクトに対して次のような YAML ファイルを作成します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 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 - $ oc create -f <file-name>.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- Horizontal Pod Autoscaler が作成されたことを確認します。 - oc get hpa cpu-autoscale - $ oc get hpa cpu-autoscale- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE cpu-autoscale Deployment/example 173m/500m 1 10 1 20m - NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE cpu-autoscale Deployment/example 173m/500m 1 10 1 20m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
2.4.6.3. メモリー使用量のパーセンテージに対する Horizontal Pod Autoscaler オブジェクトの作成
OpenShift Container Platform CLI を使用すると、メモリー使用量のパーセンテージに基づいて既存のオブジェクトを自動的にスケーリングする Horizontal Pod Autoscaler (HPA) を作成できます。HPA は、指定したメモリー使用量を維持するために、そのオブジェクトに関連付けられた Pod をスケーリングします。
							他のオブジェクトによって提供される特定の機能または動作が必要でない限り、Deployment オブジェクトまたは ReplicaSet オブジェクトを使用します。
						
Pod の最小数と最大数、および Pod がターゲットとする平均メモリー使用量を指定できます。最小値を指定しない場合、Pod には OpenShift Container Platform サーバーからのデフォルト値が付与されます。
前提条件
							Horizontal Pod Autoscaler を使用するには、クラスターの管理者はクラスターメトリックを適切に設定している必要があります。メトリクスが設定されているかどうかは、oc describe PodMetrics <pod-name> コマンドを使用して判断できます。メトリックが設定されている場合、出力は以下の Usage の下にある Cpu と Memory のように表示されます。
						
oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
$ oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal出力例
手順
- 既存のオブジェクトに対して、次のような - HorizontalPodAutoscalerオブジェクトを作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- autoscaling/v2API を使用します。
- 2
- この Horizontal Pod Autoscaler オブジェクトの名前を指定します。
- 3
- スケーリングするオブジェクトの API バージョンを指定します。- 
												ReplicationController の場合は、v1を使用します。
- 
												DeploymentConfig については、apps.openshift.io/v1を使用します。
- 
												Deployment、ReplicaSet、Statefulset オブジェクトの場合は、apps/v1を使用します。
 
- 
												ReplicationController の場合は、
- 4
- オブジェクトのタイプを指定します。オブジェクトは、Deployment、DeploymentConfig、ReplicaSet、ReplicationController、またはStatefulSetである必要があります。
- 5
- スケーリングするオブジェクトの名前を指定します。オブジェクトが存在する必要があります。
- 6
- スケールダウン時のレプリカの最小数を指定します。
- 7
- スケールアップ時のレプリカの最大数を指定します。
- 8
- メモリー使用量には、metricsパラメーターを使用します。
- 9
- メモリー使用量には、memoryを指定します。
- 10
- Utilizationに設定します。
- 11
- averageUtilizationおよびターゲットに設定する平均メモリー使用率をすべての Pod に対して指定します (要求されるメモリーのパーセンテージで表す)。ターゲット Pod にはメモリー要求が設定されている必要があります。
- 12
- オプション: スケールアップまたはスケールダウンのレートを制御するスケーリングポリシーを指定します。
 
- 次のようなコマンドを使用して、Horizontal Pod Autoscaler を作成します。 - oc create -f <file-name>.yaml - $ oc create -f <file-name>.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 以下に例を示します。 - oc create -f hpa.yaml - $ oc create -f hpa.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - horizontalpodautoscaler.autoscaling/hpa-resource-metrics-memory created - horizontalpodautoscaler.autoscaling/hpa-resource-metrics-memory created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- 次のようなコマンドを使用して、Horizontal Pod Autoscaler が作成されたことを確認します。 - oc get hpa hpa-resource-metrics-memory - $ oc get hpa hpa-resource-metrics-memory- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE hpa-resource-metrics-memory Deployment/example 2441216/500Mi 1 10 1 20m - NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE hpa-resource-metrics-memory Deployment/example 2441216/500Mi 1 10 1 20m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のようなコマンドを使用して、Horizontal Pod Autoscaler の詳細を確認します。 - oc describe hpa hpa-resource-metrics-memory - $ oc describe hpa hpa-resource-metrics-memory- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
2.4.6.4. 特定のメモリー使用のための Horizontal Pod Autoscaler オブジェクトの作成
OpenShift Container Platform CLI を使用すると、既存のオブジェクトを自動的にスケーリングする Horizontal Pod Autoscaler (HPA) を作成できます。HPA は、指定した平均メモリー使用量を維持するために、そのオブジェクトに関連付けられた Pod をスケーリングします。
							他のオブジェクトによって提供される特定の機能または動作が必要でない限り、Deployment オブジェクトまたは ReplicaSet オブジェクトを使用します。
						
Pod の最小数と最大数、および Pod がターゲットとする平均メモリー使用量を指定できます。最小値を指定しない場合、Pod には OpenShift Container Platform サーバーからのデフォルト値が付与されます。
前提条件
							Horizontal Pod Autoscaler を使用するには、クラスターの管理者はクラスターメトリックを適切に設定している必要があります。メトリクスが設定されているかどうかは、oc describe PodMetrics <pod-name> コマンドを使用して判断できます。メトリックが設定されている場合、出力は以下の Usage の下にある Cpu と Memory のように表示されます。
						
oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
$ oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal出力例
手順
- 既存のオブジェクトに対して、次のような - HorizontalPodAutoscalerオブジェクトを作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- autoscaling/v2API を使用します。
- 2
- この Horizontal Pod Autoscaler オブジェクトの名前を指定します。
- 3
- スケーリングするオブジェクトの API バージョンを指定します。- 
												Deployment、ReplicaSet、またはStatefulsetオブジェクトの場合は、apps/v1を使用します。
- 
												ReplicationControllerの場合は、v1を使用します。
- 
												DeploymentConfigの場合は、apps.openshift.io/v1を使用します。
 
- 
												
- 4
- オブジェクトのタイプを指定します。オブジェクトは、Deployment、DeploymentConfig、ReplicaSet、ReplicationController、またはStatefulSetである必要があります。
- 5
- スケーリングするオブジェクトの名前を指定します。オブジェクトが存在する必要があります。
- 6
- スケールダウン時のレプリカの最小数を指定します。
- 7
- スケールアップ時のレプリカの最大数を指定します。
- 8
- メモリー使用量には、metricsパラメーターを使用します。
- 9
- メモリー使用量には、memoryを指定します。
- 10
- タイプをAverageValueに設定します。
- 11
- averageValueおよび特定のメモリー値を指定します。
- 12
- オプション: スケールアップまたはスケールダウンのレートを制御するスケーリングポリシーを指定します。
 
- 次のようなコマンドを使用して、Horizontal Pod Autoscaler を作成します。 - oc create -f <file-name>.yaml - $ oc create -f <file-name>.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 以下に例を示します。 - oc create -f hpa.yaml - $ oc create -f hpa.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - horizontalpodautoscaler.autoscaling/hpa-resource-metrics-memory created - horizontalpodautoscaler.autoscaling/hpa-resource-metrics-memory created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- 次のようなコマンドを使用して、Horizontal Pod Autoscaler が作成されたことを確認します。 - oc get hpa hpa-resource-metrics-memory - $ oc get hpa hpa-resource-metrics-memory- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE hpa-resource-metrics-memory Deployment/example 2441216/500Mi 1 10 1 20m - NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE hpa-resource-metrics-memory Deployment/example 2441216/500Mi 1 10 1 20m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のようなコマンドを使用して、Horizontal Pod Autoscaler の詳細を確認します。 - oc describe hpa hpa-resource-metrics-memory - $ oc describe hpa hpa-resource-metrics-memory- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
2.4.7. CLI を使用した Horizontal Pod Autoscaler の状態条件について
状態条件セットを使用して、Horizontal Pod Autoscaler (HPA) がスケーリングできるかどうかや、現時点でこれがいずれかの方法で制限されているかどうかを判別できます。
					HPA の状態条件は、自動スケーリング API の v2 バージョンで利用できます。
				
HPA は、以下の状態条件で応答します。
- AbleToScale条件では、HPA がメトリックを取得して更新できるか、またバックオフ関連の条件によりスケーリングが回避されるかどうかを指定します。- 
									True条件はスケーリングが許可されることを示します。
- 
									False条件は指定される理由によりスケーリングが許可されないことを示します。
 
- 
									
- ScalingActive条件は、HPA が有効にされており (ターゲットのレプリカ数がゼロでない)、必要なメトリックを計算できるかどうかを示します。- 
									True条件はメトリックが適切に機能していることを示します。
- 
									False条件は通常フェッチするメトリックに関する問題を示します。
 
- 
									
- ScalingLimited条件は、必要とするスケールが Horizontal Pod Autoscaler の最大値または最小値によって制限されていたことを示します。- 
									True条件は、スケーリングするためにレプリカの最小または最大数を引き上げるか、引き下げる必要があることを示します。
- False条件は、要求されたスケーリングが許可されることを示します。- oc describe hpa cm-test - $ oc describe hpa cm-test- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- Horizontal Pod Autoscaler の状況メッセージです。
 
 
- 
									
以下は、スケーリングできない Pod の例です。
出力例
以下は、スケーリングに必要なメトリックを取得できなかった Pod の例です。
出力例
Conditions: Type Status Reason Message ---- ------ ------ ------- AbleToScale True SucceededGetScale the HPA controller was able to get the target's current scale ScalingActive False FailedGetResourceMetric the HPA was unable to compute the replica count: failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from resource metrics API
Conditions:
  Type                  Status    Reason                    Message
  ----                  ------    ------                    -------
  AbleToScale           True     SucceededGetScale          the HPA controller was able to get the target's current scale
  ScalingActive         False    FailedGetResourceMetric    the HPA was unable to compute the replica count: failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from resource metrics API以下は、要求される自動スケーリングが要求される最小数よりも小さい場合の Pod の例です。
出力例
2.4.7.1. CLI を使用した Horizontal Pod Autoscaler の状態条件の表示
Pod に設定された状態条件は、Horizontal Pod Autoscaler (HPA) で表示することができます。
							Horizontal Pod Autoscaler の状態条件は、自動スケーリング API の v2 バージョンで利用できます。
						
前提条件
							Horizontal Pod Autoscaler を使用するには、クラスターの管理者はクラスターメトリックを適切に設定している必要があります。メトリクスが設定されているかどうかは、oc describe PodMetrics <pod-name> コマンドを使用して判断できます。メトリックが設定されている場合、出力は以下の Usage の下にある Cpu と Memory のように表示されます。
						
oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal
$ oc describe PodMetrics openshift-kube-scheduler-ip-10-0-135-131.ec2.internal出力例
手順
Pod の状態条件を表示するには、Pod の名前と共に以下のコマンドを使用します。
oc describe hpa <pod-name>
$ oc describe hpa <pod-name>以下に例を示します。
oc describe hpa cm-test
$ oc describe hpa cm-test
						条件は、出力の Conditions フィールドに表示されます。
					
出力例
 
    