2.4. Horizontal Pod Autoscaler での Pod の自動スケーリング


開発者として、Horizontal Pod Autoscaler (HPA) を使用して、レプリケーションコントローラーに属する Pod から収集されるメトリクスまたはデプロイメント設定に基づき、OpenShift Container Platform がレプリケーションコントローラーまたはデプロイメント設定のスケールを自動的に増減する方法を指定できます。HPA は、任意のデプロイメント、デプロイメント設定、レプリカセット、レプリケーションコントローラー、またはステートフルセットに対して作成できます。

カスタムメトリクスに基づいて Pod をスケーリングする方法の詳細は、カスタムメトリクスに基づいて Pod を自動的にスケーリングする を参照してください。

注記

他のオブジェクトが提供する特定の機能や動作が必要な場合を除き、Deployment オブジェクトまたは ReplicaSet オブジェクトを使用することを推奨します。これらのオブジェクトの詳細は、デプロイメントについて を参照してください。

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 でサポートされています。

Expand
表2.1 サポートされるメトリクス
メトリクス説明API バージョン

CPU の使用率

使用されている CPU コアの数。これを使用して、Pod が要求した CPU の割合を計算できます。

autoscaling/v1autoscaling/v2

メモリーの使用率

使用されているメモリーの量。これを使用して、Pod が要求したメモリーの割合を計算できます。

autoscaling/v2

重要

メモリーベースの自動スケーリングでは、メモリー使用量がレプリカ数と比例して増減する必要があります。平均的には以下のようになります。

  • レプリカ数が増えると、Pod ごとのメモリー (作業セット) の使用量が全体的に減少します。
  • レプリカ数が減ると、Pod ごとのメモリー使用量が全体的に増加します。

OpenShift Container Platform Web コンソールを使用して、アプリケーションのメモリー動作を確認し、メモリーベースの自動スケーリングを使用する前にアプリケーションがそれらの要件を満たしていることを確認します。

以下の例は、hello-node Deployment オブジェクトの自動スケーリングを示しています。最初のデプロイメントでは 3 つの Pod が必要です。HPA オブジェクトは、最小値を 5 に増やします。Pod の CPU 使用率が 75% に達すると、Pod は 7 まで増加します。

$ oc autoscale deployment/hello-node --min=5 --max=7 --cpu-percent=75

出力例

horizontalpodautoscaler.autoscaling/hello-node autoscaled

minReplicas が 3 に設定された hello-node デプロイメントオブジェクトの HPA を作成するサンプル YAML

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: hello-node
  namespace: default
spec:
  maxReplicas: 7
  minReplicas: 3
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: hello-node
  targetCPUUtilizationPercentage: 75
status:
  currentReplicas: 5
  desiredReplicas: 0

HPA を作成したら、次のコマンドを実行して、デプロイメントの新しい状態を表示できます。

$ oc get deployment hello-node

デプロイメントには 5 つの Pod があります。

出力例

NAME         REVISION   DESIRED   CURRENT   TRIGGERED BY
hello-node   1          5         5         config

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る