2.5.4.8. 代替のレコメンダーを使用する


独自のレコメンダーを使用して、独自のアルゴリズムに基づいて自動スケーリングできます。代替レコメンダーを指定しない場合、OpenShift Container Platform はデフォルトのレコメンダーを使用します。これは、過去の使用状況に基づいて CPU およびメモリー要求を提案します。すべてのタイプのワークロードに適用されるユニバーサルレコメンデーションポリシーはないため、特定のワークロードに対して異なるレコメンダーを作成してデプロイメントすることを推奨します。

たとえば、コンテナーが特定のリソース動作を示している場合、デフォルトのレコメンダーは将来のリソース使用量を正確に予測できない可能性があります。例としては、監視アプリケーションで使用される使用量の急増とアイドル状態が交互に繰り返される周期的なパターンや、ディープラーニングアプリケーションで使用される繰り返しパターンなどがあります。これらの使用動作でデフォルトのレコメンダーを使用すると、アプリケーションのプロビジョニングが大幅に過剰になり、Out of Memory (OOM) が強制終了される可能性があります。

注記

レコメンダーを作成する方法については、このドキュメントの範囲外です。

手順

Pod に代替のレコメンダーを使用するには:

  1. 代替レコメンダーのサービスアカウントを作成し、そのサービスアカウントを必要なクラスターロールにバインドします。

    apiVersion: v1 
    1
    
    kind: ServiceAccount
    metadata:
      name: alt-vpa-recommender-sa
      namespace: <namespace_name>
    ---
    apiVersion: rbac.authorization.k8s.io/v1 
    2
    
    kind: ClusterRoleBinding
    metadata:
      name: system:example-metrics-reader
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: system:metrics-reader
    subjects:
    - kind: ServiceAccount
      name: alt-vpa-recommender-sa
      namespace: <namespace_name>
    ---
    apiVersion: rbac.authorization.k8s.io/v1 
    3
    
    kind: ClusterRoleBinding
    metadata:
      name: system:example-vpa-actor
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: system:vpa-actor
    subjects:
    - kind: ServiceAccount
      name: alt-vpa-recommender-sa
      namespace: <namespace_name>
    ---
    apiVersion: rbac.authorization.k8s.io/v1 
    4
    
    kind: ClusterRoleBinding
    metadata:
      name: system:example-vpa-target-reader-binding
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: system:vpa-target-reader
    subjects:
    - kind: ServiceAccount
      name: alt-vpa-recommender-sa
      namespace: <namespace_name>
    1
    レコメンダーを表示する namespace にレコメンダーのサービスアカウントを作成します。
    2
    レコメンダーサービスアカウントを metrics-reader ロールにバインドします。レコメンダーをデプロイする場所の namespace を指定します。
    3
    レコメンダーサービスアカウントを vpa-actor ロールにバインドします。レコメンダーをデプロイする場所の namespace を指定します。
    4
    レコメンダーサービスアカウントを vpa-target-reader ロールにバインドします。レコメンダーを表示する namespace を指定します。
  2. 代替レコメンダーをクラスターに追加するには、次のような Deployment オブジェクトを作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: alt-vpa-recommender
      namespace: <namespace_name>
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: alt-vpa-recommender
      template:
        metadata:
          labels:
            app: alt-vpa-recommender
        spec:
          containers: 
    1
    
          - name: recommender
            image: quay.io/example/alt-recommender:latest 
    2
    
            imagePullPolicy: Always
            resources:
              limits:
                cpu: 200m
                memory: 1000Mi
              requests:
                cpu: 50m
                memory: 500Mi
            ports:
            - name: prometheus
              containerPort: 8942
            securityContext:
              allowPrivilegeEscalation: false
              capabilities:
                drop:
                  - ALL
              seccompProfile:
                type: RuntimeDefault
          serviceAccountName: alt-vpa-recommender-sa 
    3
    
          securityContext:
            runAsNonRoot: true
    1
    代替レコメンダーのコンテナーを作成します。
    2
    推奨イメージを指定します。
    3
    レコメンダー用に作成したサービスアカウントを関連付けます。

    同じ namespace 内の代替レコメンダー用に新しい Pod が作成されます。

    $ oc get pods

    出力例

    NAME                                        READY   STATUS    RESTARTS   AGE
    frontend-845d5478d-558zf                    1/1     Running   0          4m25s
    frontend-845d5478d-7z9gx                    1/1     Running   0          4m25s
    frontend-845d5478d-b7l4j                    1/1     Running   0          4m25s
    vpa-alt-recommender-55878867f9-6tp5v        1/1     Running   0          9s

  3. 代替レコメンダー Deployment オブジェクトの名前を含む Vertical Pod Autoscaler Operator (VPA) カスタムリソース (CR) を設定します。

    代替レコメンダーを含めるための VPA CR の例

    apiVersion: autoscaling.k8s.io/v1
    kind: VerticalPodAutoscaler
    metadata:
      name: vpa-recommender
      namespace: <namespace_name>
    spec:
      recommenders:
        - name: alt-vpa-recommender 
    1
    
      targetRef:
        apiVersion: "apps/v1"
        kind:       Deployment 
    2
    
        name:       frontend

    1
    代替レコメンダーデプロイメントの名前を指定します。
    2
    この VPA で管理する既存のワークロードオブジェクトの名前を指定します。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る