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 の下にある CpuMemory のように表示されます。

$ 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>

手順

  1. 既存のオブジェクトに対して、次のような HorizontalPodAutoscaler オブジェクトを作成します。

    apiVersion: autoscaling/v2 
    1
    
    kind: HorizontalPodAutoscaler
    metadata:
      name: hpa-resource-metrics-memory 
    2
    
      namespace: default
    spec:
      scaleTargetRef:
        apiVersion: apps/v1 
    3
    
        kind: Deployment 
    4
    
        name: example 
    5
    
      minReplicas: 1 
    6
    
      maxReplicas: 10 
    7
    
      metrics: 
    8
    
      - type: Resource
        resource:
          name: memory 
    9
    
          target:
            type: AverageValue 
    10
    
            averageValue: 500Mi 
    11
    
      behavior: 
    12
    
        scaleDown:
          stabilizationWindowSeconds: 300
          policies:
          - type: Pods
            value: 4
            periodSeconds: 60
          - type: Percent
            value: 10
            periodSeconds: 60
          selectPolicy: Max
    1
    autoscaling/v2 API を使用します。
    2
    この Horizontal Pod Autoscaler オブジェクトの名前を指定します。
    3
    スケーリングするオブジェクトの API バージョンを指定します。
    • DeploymentReplicaSet、または Statefulset オブジェクトの場合は、apps/v1 を使用します。
    • ReplicationController の場合は、v1 を使用します。
    • DeploymentConfig の場合は、apps.openshift.io/v1 を使用します。
    4
    オブジェクトのタイプを指定します。オブジェクトは、DeploymentDeploymentConfigReplicaSetReplicationController、または StatefulSet である必要があります。
    5
    スケーリングするオブジェクトの名前を指定します。オブジェクトが存在する必要があります。
    6
    スケールダウン時のレプリカの最小数を指定します。
    7
    スケールアップ時のレプリカの最大数を指定します。
    8
    メモリー使用量には、metrics パラメーターを使用します。
    9
    メモリー使用量には、memory を指定します。
    10
    タイプを AverageValue に設定します。
    11
    averageValue および特定のメモリー値を指定します。
    12
    オプション: スケールアップまたはスケールダウンのレートを制御するスケーリングポリシーを指定します。
  2. 次のようなコマンドを使用して、Horizontal Pod Autoscaler を作成します。

    $ oc create -f <file-name>.yaml

    以下に例を示します。

    $ oc create -f hpa.yaml

    出力例

    horizontalpodautoscaler.autoscaling/hpa-resource-metrics-memory created

検証

  • 次のようなコマンドを使用して、Horizontal Pod Autoscaler が作成されたことを確認します。

    $ oc get hpa hpa-resource-metrics-memory

    出力例

    NAME                          REFERENCE            TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
    hpa-resource-metrics-memory   Deployment/example   2441216/500Mi   1         10        1          20m

  • 次のようなコマンドを使用して、Horizontal Pod Autoscaler の詳細を確認します。

    $ oc describe hpa hpa-resource-metrics-memory

    出力例

    Name:                        hpa-resource-metrics-memory
    Namespace:                   default
    Labels:                      <none>
    Annotations:                 <none>
    CreationTimestamp:           Wed, 04 Mar 2020 16:31:37 +0530
    Reference:                   Deployment/example
    Metrics:                     ( current / target )
      resource memory on pods:   2441216 / 500Mi
    Min replicas:                1
    Max replicas:                10
    ReplicationController pods:  1 current / 1 desired
    Conditions:
      Type            Status  Reason              Message
      ----            ------  ------              -------
      AbleToScale     True    ReadyForNewScale    recommended size matches current size
      ScalingActive   True    ValidMetricFound    the HPA was able to successfully calculate a replica count from memory resource
      ScalingLimited  False   DesiredWithinRange  the desired count is within the acceptable range
    Events:
      Type     Reason                   Age                 From                       Message
      ----     ------                   ----                ----                       -------
      Normal   SuccessfulRescale        6m34s               horizontal-pod-autoscaler  New size: 1; reason: All metrics below target

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る