2.5.4.6. VPA Operator のパフォーマンスチューニング


クラスター管理者は、Vertical Pod Autoscaler Operator (VPA) のパフォーマンスを調整して、VPA が Kubernetes API サーバーにリクエストを行うレートを制限したり、VPA レコメンダー、アップデーター、アドミッションコントローラーコンポーネントの Pod の CPU とメモリーリソースを指定したりできます。

VPA カスタムリソース (CR) が管理するワークロードのみを監視するように VPA を設定することもできます。デフォルトでは、VPA はクラスター内のすべてのワークロードを監視します。その結果、VPA はすべてのワークロードの 8 日間の履歴データを蓄積して保存します。ワークロードに対して新しい VPA CR が作成された場合、VPA でこれを使用できます。ただし、これにより VPA は大量の CPU とメモリーを使用することになります。これにより、特に大規模なクラスターでは VPA が失敗する可能性があります。VPA CR を使用してワークロードのみを監視するように VPA を設定すると、CPU とメモリーのリソースを節約できます。トレードオフの 1 つは、実行中のワークロードがあり、そのワークロードを管理するために VPA CR を作成する場合です。VPA にはそのワークロードの履歴データがありません。そのため、最初の推奨値は、ワークロードがしばらく実行された後の推奨値ほど有用ではありません。

これらのチューニングを使用して、VPA が最高の効率で動作するために十分なリソースを確保し、スロットルや Pod の承認の遅延を防止します。

VerticalPodAutoscalerController カスタムリソース (CR) を編集することで、VPA コンポーネントに対して以下のチューニングを行えます。

  • スロットル調整と Pod アドミッションの遅延を防ぐには、kube-api-qps パラメーターと kube-api-burst パラメーターを使用して、Kubernetes API サーバーの VPA リクエストの 1 秒あたりのクエリー数 (QPS) とバーストレートを設定します。
  • 十分な CPU とメモリーを確保するには、標準の cpu および memory リソース要求を使用して、VPA コンポーネント Pod の CPU 要求とメモリー要求を設定します。
  • VPA CR が管理するワークロードのみを監視するように VPA を設定するには、レコメンデーションコンポーネントの memory-saver パラメーターを true に設定します。

各 VPA コンポーネントに設定できるリソースおよびレート制限のガイドラインについて、次の表では、クラスターや他の要素のサイズに応じて、推奨のベースライン値を紹介しています。

重要

これらの推奨値は、Red Hat の内部テストに基づいて算出されたものであり、必ずしも実際のクラスターを代表するものではありません。実稼働クラスターを設定する前に、実稼働以外のクラスターでこれらの値をテストしてください。

Expand
表2.2 クラスター内のコンテナーによる要求
コンポーネント1 - 500 個のコンテナー500 - 1000 個のコンテナー1000 - 2000 個のコンテナー2000 - 4000 個のコンテナー4000 個以上のコンテナー
 

CPU

メモリー

CPU

メモリー

CPU

メモリー

CPU

メモリー

CPU

メモリー

アドミッション

25m

50 Mi

25m

75Mi

40m

150Mi

75m

260 Mi

(0.03c)/2 + 10 [1]

(0.1c)/2 + 50 [1]

レコメンダー

25m

100Mi

50m

160Mi

75m

275Mi

120M

420Mi

(0.05c)/2 + 50 [1]

(0.15c)/2 + 120 [1]

アップデーター

25m

100Mi

50m

220Mi

80 m

350Mi

150 m

500Mi

(0.07c)/2 + 20 [1]

(0.15c)/2 + 200 [1]

  1. c は、クラスター内のコンテナーの数です。
注記

コンテナーのメモリー制限は、表中の推奨される要求量の少なくとも 2 倍に設定することを推奨します。ただし、CPU は圧縮可能なリソースであるため、コンテナーの CPU 制限を設定すると VPA をスロットリングできます。そのため、コンテナーに CPU 制限を設定しないことが推奨されます。

Expand
表2.3 クラスター内の VPAs によるレート制限
コンポーネント1-150 VPAs151-500 VPAs501-2,000 VPAs2,001-4,000 VPAs
 

QPS 制限 [1]

Burst [2]

QPS 制限

Burst

QPS 制限

Burst

QPS 制限

Burst

レコメンダー

5

10

30

60

60

120

120

240

アップデーター

5

10

30

60

60

120

120

240

  1. QPS は、Kubernetes API サーバーにリクエストを行う際の 1 秒あたりのクエリー数 (QPS) の制限を指定します。アップデーターおよびレコメンダー Pod のデフォルトは 5.0 です。
  2. Burst は、Kubernetes API サーバーにリクエストを行う際のバースト制限を指定します。アップデーターおよびレコメンダー Pod のデフォルトは 10.0 です。
注記

クラスターに 4,000 を超える VPAs がある場合は、テーブルの値でパフォーマンスチューニングを開始し、必要なレコメンダー、更新レイテンシーおよびパフォーマンスを達成するまで値を徐々に増やすことを推奨します。QPS および Burst の増加により、VPA コンポーネントから API サーバーに送信される API 要求が多すぎると、クラスターの健全性に影響し、Kubernetes API サーバーの速度が遅くなる可能性があるため、これらの値は徐々に調整します。

以下の VPA コントローラー CR の例は、1,000 から 2,000 コンテナーを持つクラスター用であり、Pod の作成サージは 26 から 50 になります。CR は以下の値を設定します。

  • 3 つの VPA コンポーネントすべてに対するコンテナーメモリーおよび CPU 要求
  • 3 つの VPA コンポーネントすべてに対するコンテナーのメモリー制限
  • 3 つの VPA コンポーネントすべてに対する QPS およびバーストレート
  • VPA レコメンダーコンポーネントの memory-saver パラメーターを true に設定

VerticalPodAutoscalerController CR の例

apiVersion: autoscaling.openshift.io/v1
kind: VerticalPodAutoscalerController
metadata:
  name: default
  namespace: openshift-vertical-pod-autoscaler
spec:
  deploymentOverrides:
    admission: 
1

      container:
        args: 
2

          - '--kube-api-qps=50.0'
          - '--kube-api-burst=100.0'
        resources:
          requests: 
3

            cpu: 40m
            memory: 150Mi
          limits:
            memory: 300Mi
    recommender: 
4

      container:
        args:
          - '--kube-api-qps=60.0'
          - '--kube-api-burst=120.0'
          - '--memory-saver=true' 
5

        resources:
          requests:
            cpu: 75m
            memory: 275Mi
          limits:
            memory: 550Mi
    updater: 
6

      container:
        args:
          - '--kube-api-qps=60.0'
          - '--kube-api-burst=120.0'
        resources:
          requests:
            cpu: 80m
            memory: 350M
          limits:
            memory: 700Mi
  minReplicas: 2
  podMinCPUMillicores: 25
  podMinMemoryMb: 250
  recommendationOnly: false
  safetyMarginFraction: 0.15

1
VPA アドミッションコントローラーのチューニングパラメーターを指定します。
2
VPA アドミッションコントローラーの API QPS とバーストレートを指定します。
  • kube-api-qps: Kubernetes API サーバーにリクエストを行うときの 1 秒あたりのクエリー数 (QPS) 制限を指定します。デフォルトは 5.0 です。
  • kube-api-burst: Kubernetes API サーバーにリクエストを行うときのバースト制限を指定します。デフォルトは 10.0 です。
3
VPA アドミッションコントローラー Pod のリソース要求および制限を指定します。
4
VPA レコメンダーのチューニングパラメーターを指定します。
5
VPA Operator が VPA CR を持つワークロードのみを監視するように指定します。デフォルトは false です。
6
VPA アップデーターのチューニングパラメーターを指定します。

設定が各 VPA コンポーネント Pod に適用されたことを確認できます。

アップデーター Pod の例

apiVersion: v1
kind: Pod
metadata:
  name: vpa-updater-default-d65ffb9dc-hgw44
  namespace: openshift-vertical-pod-autoscaler
# ...
spec:
  containers:
  - args:
    - --logtostderr
    - --v=1
    - --min-replicas=2
    - --kube-api-qps=60.0
    - --kube-api-burst=120.0
# ...
    resources:
      requests:
        cpu: 80m
        memory: 350M
# ...

アドミッションコントローラー Pod の例

apiVersion: v1
kind: Pod
metadata:
  name: vpa-admission-plugin-default-756999448c-l7tsd
  namespace: openshift-vertical-pod-autoscaler
# ...
spec:
  containers:
  - args:
    - --logtostderr
    - --v=1
    - --tls-cert-file=/data/tls-certs/tls.crt
    - --tls-private-key=/data/tls-certs/tls.key
    - --client-ca-file=/data/tls-ca-certs/service-ca.crt
    - --webhook-timeout-seconds=10
    - --kube-api-qps=50.0
    - --kube-api-burst=100.0
# ...
    resources:
      requests:
        cpu: 40m
        memory: 150Mi
# ...

レコメンダー Pod の例

apiVersion: v1
kind: Pod
metadata:
  name: vpa-recommender-default-74c979dbbc-znrd2
  namespace: openshift-vertical-pod-autoscaler
# ...
spec:
  containers:
  - args:
    - --logtostderr
    - --v=1
    - --recommendation-margin-fraction=0.15
    - --pod-recommendation-min-cpu-millicores=25
    - --pod-recommendation-min-memory-mb=250
    - --kube-api-qps=60.0
    - --kube-api-burst=120.0
    - --memory-saver=true
# ...
    resources:
      requests:
        cpu: 75m
        memory: 275Mi
# ...

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る