すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:垂直ポッド自動スケーリング

最終更新日:Dec 14, 2024

Container Service for Kubernetes (ACK) クラスターに垂直ポッド自動スケーラーコンポーネントをデプロイできます。 vertical-pod-autoscalerは、ポッドの垂直自動スケーリングを可能にする垂直ポッドオートスケーラー (VPA) です。 vertical-pod-autoscalerは、クラスター内のポッドのリソース使用量に基づいて、クラスターのリソース使用量の制限を自動的に設定します。 このように、ACKは十分なリソースを持つノードにポッドをスケジュールできます。 vertical-pod-autoscalerは、初期コンテナー設定で指定したリソース制限に対するリソース要求の比率も維持します。 このトピックでは、YAMLファイルを使用して垂直ポッドの自動スケーリングを有効にする方法について説明します。

前提条件

次の操作が完了していることを確認します。

背景情報

重要

縦型ポッドの自動スケーリングはテスト中です。 この機能を使用するときは注意してください。

  • 垂直ポッド自動スケーラーを使用して、実行中のポッドのリソース設定を更新できます。 この機能はテスト中です。 構成の更新はポッドの再起動と再作成につながり、ポッドは他のノードにスケジュールされる可能性があります。

  • vertical-pod-autoscalerは、レプリケーションコントローラーで管理されていないポッドを削除しません。 これらのポッドの場合、自動モードは初期モードと同等です。

  • vertical-pod-autoscalerとHorizontal Pod Autoscaler (HPA) を同時に実行することはできません。 HPAは、CPUおよびメモリメトリックを監視する。 HPAがCPUおよびメモリメトリクス以外のカスタムまたは外部リソースメトリクスのみを監視する場合は、HPAと組み合わせてvertical-pod-autoscalerを使用できます。

  • vertical-pod-autoscalerは、アドミッションコントローラーとしてアドミッションwebhookを使用します。 クラスターに他のアドミッションWebフックが存在する場合は、アドミッションWebフックがvertical-pod-autoscalerのアドミッションWebフックと競合しないようにしてください。 アドミッションコントローラの実行シーケンスは、APIサーバのパラメータにおいて定義される。

  • vertical-pod-autoscalerはほとんどのメモリ不足 (OOM) イベントを処理できますが、特定のシナリオではOOMイベントを処理できない場合があります。

  • 垂直ポッド自動スケーラーのパフォーマンスは、大規模なクラスターではテストされません。

  • vertical-pod-autoscalerによって変更されたポッドリソース要求は、ノードリソース、アイドルリソース、およびリソース割り当てを含む実際のリソースの上限を超える場合があります。 この場合、ポッドはPending状態に入り、スケジュールに失敗する可能性があります。 クラスター自動スケーラーを使用して、この問題の影響を軽減できます。

  • 複数の垂直ポッド自動スケーラーコンポーネントがポッドのリソース使用量を同時に監視する場合、未定義の動作が発生する可能性があります。

vertical-pod-autoscalerのインストール

  1. 次のコマンドを実行して、ロールベースのアクセス制御 (RBAC) 権限ファイルを作成します。

    kubectl apply -f rbac.yaml

    クリックして詳細を表示

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    メタデータ:
      name: system:metrics-reader
    ルール:
      - apiGroups:
          - "metrics.k8s.io"
        リソース:
          -ポッド
        verbs:
          - get
          -リスト
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    メタデータ:
      名前: system:vpa-actor
    ルール:
      -apiGroups:
          - ""
        リソース:
          -ポッド
          -ノード
          -limitranges
        verbs:
          -取得
          -リスト
          - watch
      - apiGroups:
          - ""
        resources:
          -イベント
        verbs:
          - get
          - list
          - watch
          - create
      - apiGroups:
          -"poc.autoscaling.k8s.io"
        resources:
          -verticalpodautoscalers
        verbs:
          - get
          - list
          -ウォッチ
          - patch
      - apiGroups:
          - "autoscaling.k8s.io"
        resources:
          -verticalpodautoscalers
        verbs:
          - get
          - list
          - watch
          -パッチ
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    メタデータ:
      名前: system:vpa-checkpoint-actor
    ルール:
      - apiGroups:
          -"poc.autoscaling.k8s.io"
        resources:
          -verticalpodautoscalercheckpoints
        verbs:
          - get
          - list
          - watch
          - create
          - patch
          -削除
      - apiGroups:
          - "autoscaling.k8s.io"
        resources:
          -verticalpodautoscalercheckpoints
        verbs:
          - get
          - list
          - watch
          - create
          - patch
          -削除
      - apiGroups:
          - ""
        resources:
          - namespaces
        verbs:
          - get
          -リスト
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    メタデータ:
      名前: system:evictioner
    ルール:
      - apiGroups:
          -「アプリ」
          -"extensions"
        resources:
          -replicasets
        verbs:
          - get
      - apiGroups:
          - ""
        resources:
          -ポッド /退去
        verbs:
          -作成
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    メタデータ:
      name: system:metrics-reader
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: system:metrics-reader
    主題:
      - kind: ServiceAccount
        名前: vpa-recommender
        名前空間: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    メタデータ:
      名前: system:vpa-actor
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      名前: system:vpa-actor
    主題:
      - kind: ServiceAccount
        名前: vpa-recommender
        namespace: kube-system
      - kind: ServiceAccount
        名前: vpa-updater
        名前空間: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    メタデータ:
      名前: system:vpa-checkpoint-actor
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      名前: system:vpa-checkpoint-actor
    主題:
      - kind: ServiceAccount
        名前: vpa-recommender
        名前空間: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    メタデータ:
      name: system:vpa-target-reader
    ルール:
      - apiGroups:
        - '*'
        resources:
        -'*/scale'
        verbs:
        - get
        - watch
      - apiGroups:
          - ""
        resources:
          -replicationcontrollers
        verbs:
          - get
          - list
          - watch
      - apiGroups:
          -アプリ
        resources:
          -daemonsets
          -デプロイメント
          -replicasets
          -statefulsets
        verbs:
          - get
          - list
          - watch
      - apiGroups:
          -バッチ
        resources:
          -ジョブ
          -cronjobs
        verbs:
          - get
          - list
          -ウォッチ
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    メタデータ:
      name: system:vpa-target-reader-binding
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: system:vpa-target-reader
    主題:
      - kind: ServiceAccount
        名前: vpa-recommender
        namespace: kube-system
      - kind: ServiceAccount
        名前: vpa-admission-controller
        namespace: kube-system
      - kind: ServiceAccount
        名前: vpa-updater
        名前空間: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    メタデータ:
      name: system:vpa-evictioner-binding
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      名前: system:evictioner
    主題:
      - kind: ServiceAccount
        名前: vpa-updater
        名前空間: kube-system
    ---
    apiVersion: v1
    kind: ServiceAccount
    メタデータ:
      名前: vpa-admission-controller
      名前空間: kube-system
    ---
    apiVersion: v1
    kind: ServiceAccount
    メタデータ:
      名前: vpa-recommender
      名前空間: kube-system
    ---
    apiVersion: v1
    kind: ServiceAccount
    メタデータ:
      名前: vpa-updater
      名前空間: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    メタデータ:
      名前: system:vpa-admission-controller
    ルール:
      - apiGroups:
          - ""
        resources:
          -ポッド
          - configmaps
          -ノード
          -limitranges
        verbs:
          - get
          - list
          - watch
      - apiGroups:
          - "admissionregistration.k8s.io"
        resources:
          -mutatingwebhookconfigurations
        verbs:
          - create
          -削除
          - get
          - list
      - apiGroups:
          -"poc.autoscaling.k8s.io"
        resources:
          -verticalpodautoscalers
        verbs:
          - get
          - list
          - watch
      - apiGroups:
          - "autoscaling.k8s.io"
        resources:
          -verticalpodautoscalers
        verbs:
          - get
          - list
          - watch
      - apiGroups:
          - "coordination.k8s.io"
        resources:
          -リース
        verbs:
          - create
          - update
          - get
          - list
          -ウォッチ
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    メタデータ:
      名前: system:vpa-admission-controller
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      名前: system:vpa-admission-controller
    主題:
      - kind: ServiceAccount
        名前: vpa-admission-controller
        名前空間: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    メタデータ:
      name: system:vpa-status-reader
    ルール:
      - apiGroups:
          - "coordination.k8s.io"
        resources:
          -リース
        verbs:
          - get
          - list
          -ウォッチ
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    メタデータ:
      name: system:vpa-status-reader-binding
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: system:vpa-status-reader
    主題:
      - kind: ServiceAccount
        名前: vpa-updater
        名前空間: kube-system 
  2. 次のコマンドを実行して、vertical-pod-autoscaler用のCustomResourceDefinition (CRD) を作成します。

    CRDは、ACKクラスタのスケーラビリティを改善する。 詳細については、「CustomResourceDefinitionsによるKubernetes APIの拡張」をご参照ください。

    kubectl apply -f crd.yaml

    Kubernetesバージョンが1.22より前のクラスター用のcrd.yamlテンプレート

    apiVersion: apiextensions.k8s.io/v1beta1
    kind: CustomResourceDefinition
    メタデータ:
      名前: verticalpodautoscalers.autoscaling.k8s.io
      アノテーション:
        "api-approved.kubernetes.io": " https://github.com/kubernetes/kubernetes/pull/63797 "
    spec:
      グループ: autoscaling.k8s.io
      scope: 名前付き
      名前:
        複数形: verticalpodautoscalers
        単数: verticalpodautoscaler
        kind: VerticalPodAutoscaler
        shortNames:
          -vpa
      version: v1beta1
      バージョン:
        -name: v1beta1
          served: false
          storage: false
        -name: v1beta2
          サーブ: true
          ストレージ: true
        -name: v1
          サーブ: true
          storage: false
      検証:
        # openAPIV3Schemaは、カスタムオブジェクトを検証するためのスキーマです。
        openAPIV3Schema:
          type: object
          プロパティ:
            仕様:
              type: object
              必須: []
              プロパティ:
                targetRef:
                  type: object
                updatePolicy:
                  type: object
                  プロパティ:
                    updateMode:
                      タイプ: string
                resourcePolicy:
                  type: object
                  プロパティ:
                    containerPolicies:
                      タイプ: 配列
                      items:
                        type: object
                        プロパティ:
                          containerName:
                            タイプ: string
                          controlledValues:
                            タイプ: string
                            enum: ["RequestsAndLimits", "RequestsOnly"]
                          モード:
                            タイプ: string
                            enum: ["Auto", "Off"]
                          minAllowed:
                            type: object
                          maxAllowed:
                            type: object
                          controlledResources:
                            タイプ: 配列
                            items:
                              タイプ: string
                              enum: ["cpu", "memory"]
    ---
    apiVersion: apiextensions.k8s.io/v1beta1
    kind: CustomResourceDefinition
    メタデータ:
      名前: verticalpodautoscalercheckpoints.autoscaling.k8s.io
      アノテーション:
        "api-approved.kubernetes.io": " https://github.com/kubernetes/kubernetes/pull/63797 "
    spec:
      グループ: autoscaling.k8s.io
      scope: 名前付き
      名前:
        複数: verticalpodautoscalercheckpoints
        単数形: verticalpodautoscalercheckpoint
        kind: VerticalPodAutoscalerCheckpoint
        shortNames:
          -vpacheckpoint
      version: v1beta1
      バージョン:
        -name: v1beta1
          served: false
          storage: false
        -name: v1beta2
          サーブ: true
          ストレージ: true
        -name: v1
          サーブ: true
          storage: false 

    Kubernetesバージョンが1.22以降のクラスターのcrd.yamlテンプレート

    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    メタデータ:
      アノテーション:
        api-approved.kubernetes.io: https://github.com/kubernetes/kubernetes/pull/63797
        controller-gen.kubebuilder.io /バージョン: v0.9.2
      creationTimestamp: null
      名前: verticalpodautoscalercheckpoints.autoscaling.k8s.io
    spec:
      グループ: autoscaling.k8s.io
      名前:
        kind: VerticalPodAutoscalerCheckpoint
        listKind: VerticalPodAutoscalerCheckpointList
        複数: verticalpodautoscalercheckpoints
        shortNames:
        -vpacheckpoint
        単数形: verticalpodautoscalercheckpoint
      scope: 名前付き
      バージョン:
      -name: v1
        スキーマ:
          openAPIV3Schema:
            説明: VerticalPodAutoscalerCheckpointは内部のチェックポイントです。
              recommenderの再起動後にリカバリに使用されるVPAの状態。
            プロパティ:
              apiVersion:
                説明: 'APIVersionは、この表現のバージョン管理されたスキーマを定義します。
                  オブジェクトの サーバーは認識されたスキーマを最新のものに変換する必要があります
                  認識されない値を拒否する場合があります。 詳細: https:// git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
                タイプ: string
              kind:
                description: 'KindはRESTリソースを表す文字列値です。
                  オブジェクトはを表します。 サーバーは、クライアントのエンドポイントからこれを推測する可能性があります
                  にリクエストを送信します。 更新できません。 キャメルケースで。 詳細: https:// git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                タイプ: string
              metadata:
                type: object
              仕様:
                description: 'チェックポイントの仕様。 詳細: https:// git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status。
                プロパティ:
                  containerName:
                    description: チェックポイントされたコンテナの名前。
                    タイプ: string
                  vpaObjectName:
                    description: VerticalPodAutoscalerCheckpointを格納したVPAオブジェクトの名前
                      オブジェクトを作成します。
                    タイプ: string
                type: object
              状態:
                description: チェックポイントのデータ。
                プロパティ:
                  cpuHistogram:
                    説明: CPU消費量のヒストグラムのチェックポイント。
                    プロパティ:
                      bucketWeights:
                        説明: バケットインデックスからバケット重量へのマップ。
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      referenceTimestamp:
                        description: 内で収集されたサンプルの参照タイムスタンプ
                          このヒストグラム。
                        形式: date-time
                        nullable: true
                        タイプ: string
                      totalWeight:
                        description: 重みの分母として使用されるサンプルの合計
                          BucketWeightsから。
                        タイプ: 番号
                    type: object
                  firstSampleStart:
                    description: ヒストグラムからの最初のサンプルのタイムスタンプ。
                    形式: date-time
                    nullable: true
                    タイプ: string
                  lastSampleStart:
                    description: ヒストグラムの最後のサンプルのタイムスタンプ。
                    形式: date-time
                    nullable: true
                    タイプ: string
                  lastUpdateTime:
                    description: ステータスが最後に更新された時刻。
                    形式: date-time
                    nullable: true
                    タイプ: string
                  memoryHistogram:
                    description: メモリ消費のヒストグラムのチェックポイント。
                    プロパティ:
                      bucketWeights:
                        説明: バケットインデックスからバケット重量へのマップ。
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      referenceTimestamp:
                        description: 内で収集されたサンプルの参照タイムスタンプ
                          このヒストグラム。
                        形式: date-time
                        nullable: true
                        タイプ: string
                      totalWeight:
                        description: 重みの分母として使用されるサンプルの合計
                          BucketWeightsから。
                        タイプ: 番号
                    type: object
                  totalSamplesCount:
                    description: ヒストグラム内のサンプルの総数。
                    タイプ: integer
                  version:
                    description: 保存されているデータの形式のバージョン。
                    タイプ: string
                type: object
            type: object
        サーブ: true
        ストレージ: true
      -name: v1beta2
        スキーマ:
          openAPIV3Schema:
            説明: VerticalPodAutoscalerCheckpointは内部のチェックポイントです。
              recommenderの再起動後にリカバリに使用されるVPAの状態。
            プロパティ:
              apiVersion:
                説明: 'APIVersionは、この表現のバージョン管理されたスキーマを定義します。
                  オブジェクトの サーバーは認識されたスキーマを最新のものに変換する必要があります
                  認識されない値を拒否する場合があります。 詳細: https:// git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
                タイプ: string
              kind:
                description: 'KindはRESTリソースを表す文字列値です。
                  オブジェクトはを表します。 サーバーは、クライアントのエンドポイントからこれを推測する可能性があります
                  にリクエストを送信します。 更新できません。 キャメルケースで。 詳細: https:// git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                タイプ: string
              metadata:
                type: object
              仕様:
                description: 'チェックポイントの仕様。 詳細: https:// git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status。
                プロパティ:
                  containerName:
                    description: チェックポイントされたコンテナの名前。
                    タイプ: string
                  vpaObjectName:
                    description: VerticalPodAutoscalerCheckpointを格納したVPAオブジェクトの名前
                      オブジェクトを作成します。
                    タイプ: string
                type: object
              状態:
                description: チェックポイントのデータ。
                プロパティ:
                  cpuHistogram:
                    説明: CPU消費量のヒストグラムのチェックポイント。
                    プロパティ:
                      bucketWeights:
                        説明: バケットインデックスからバケット重量へのマップ。
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      referenceTimestamp:
                        description: 内で収集されたサンプルの参照タイムスタンプ
                          このヒストグラム。
                        形式: date-time
                        nullable: true
                        タイプ: string
                      totalWeight:
                        description: 重みの分母として使用されるサンプルの合計
                          BucketWeightsから。
                        タイプ: 番号
                    type: object
                  firstSampleStart:
                    description: ヒストグラムからの最初のサンプルのタイムスタンプ。
                    形式: date-time
                    nullable: true
                    タイプ: string
                  lastSampleStart:
                    description: ヒストグラムの最後のサンプルのタイムスタンプ。
                    形式: date-time
                    nullable: true
                    タイプ: string
                  lastUpdateTime:
                    description: ステータスが最後に更新された時刻。
                    形式: date-time
                    nullable: true
                    タイプ: string
                  memoryHistogram:
                    description: メモリ消費のヒストグラムのチェックポイント。
                    プロパティ:
                      bucketWeights:
                        説明: バケットインデックスからバケット重量へのマップ。
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      referenceTimestamp:
                        description: 内で収集されたサンプルの参照タイムスタンプ
                          このヒストグラム。
                        形式: date-time
                        nullable: true
                        タイプ: string
                      totalWeight:
                        description: 重みの分母として使用されるサンプルの合計
                          BucketWeightsから。
                        タイプ: 番号
                    type: object
                  totalSamplesCount:
                    description: ヒストグラム内のサンプルの総数。
                    タイプ: integer
                  version:
                    description: 保存されているデータの形式のバージョン。
                    タイプ: string
                type: object
            type: object
        サーブ: true
        storage: false
    ---
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    メタデータ:
      アノテーション:
        api-approved.kubernetes.io: https://github.com/kubernetes/kubernetes/pull/63797
        controller-gen.kubebuilder.io /バージョン: v0.9.2
      creationTimestamp: null
      名前: verticalpodautoscalers.autoscaling.k8s.io
    spec:
      グループ: autoscaling.k8s.io
      名前:
        kind: VerticalPodAutoscaler
        listKind: VerticalPodAutoscalerList
        複数形: verticalpodautoscalers
        shortNames:
        -vpa
        単数: verticalpodautoscaler
      scope: 名前付き
      バージョン:
      -additionalPrinterColumns:
        -jsonPath: 。spec.updatePolicy.updateMode
          name: モード
          タイプ: string
        -jsonPath: 。status.recommendation.containerRecommendations[0].tar get.cpu
          名前: CPU
          タイプ: string
        -jsonPath: 。status.recommendation.containerRecommendations[0].tar get.memory
          名前: Mem
          タイプ: string
        -jsonPath: 。status.conditions[?(@.type=='RecommendationProvided')].status
          名前: 提供
          タイプ: string
        -jsonPath: 。metadata.creationTimestamp
          名前: Age
          タイプ: 日付
        名前: v1
        スキーマ:
          openAPIV3Schema:
            説明: VerticalPodAutoscalerは垂直ポッドの構成です
              履歴に基づいてポッドリソースを自動的に管理するautoscaler
              そしてリアルタイムのリソース利用。
            プロパティ:
              apiVersion:
                説明: 'APIVersionは、この表現のバージョン管理されたスキーマを定義します。
                  オブジェクトの サーバーは認識されたスキーマを最新のものに変換する必要があります
                  認識されない値を拒否する場合があります。 詳細: https:// git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
                タイプ: string
              kind:
                description: 'KindはRESTリソースを表す文字列値です。
                  オブジェクトはを表します。 サーバーは、クライアントのエンドポイントからこれを推測する可能性があります
                  にリクエストを送信します。 更新できません。 キャメルケースで。 詳細: https:// git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                タイプ: string
              metadata:
                type: object
              仕様:
                description: 'オートスケーラの動作の仕様。 より多くの情報:
                  https:// git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status。
                プロパティ:
                  recommenders:
                    description: レコメンデーションの生成を担当するRecommender
                      このオブジェクトの リストは空にする必要があります (デフォルトのレコメンダ
                      はレコメンデーションを生成するか、正確に1つのレコメンダを含みます。
                    items:
                      説明: VerticalPodAutoscalerRecommenderSelectorは
                        特定の垂直ポッドAutoscalerリコメンダー。 将来的には
                        すなわち、パラメータをレコメンダに渡すことができる。
                      プロパティ:
                        名前:
                          description: 生成を担当するrecommenderの名前
                            このオブジェクトの推奨。
                          タイプ: string
                      required:
                      -name
                      type: object
                    タイプ: 配列
                  resourcePolicy:
                    説明: 自動スケーラーが推奨リソースを計算する方法を制御します。
                      リソースポリシーを使用して、推奨事項に制約を設定できます。
                      個々の容器のため。 指定しない場合、autoscalerは
                      追加なしで、ポッド内のすべてのコンテナに推奨されるリソース
                      を使用します。
                    プロパティ:
                      containerPolicies:
                        description: コンテナーごとのリソースポリシー。
                        items:
                          説明: ContainerResourcePolicyが自動スケーラーの制御方法
                            は、特定のコンテナの推奨リソースを計算します。
                          プロパティ:
                            containerName:
                              説明: コンテナーまたはDefaultContainerResourcePolicyの名前、
                                この場合、ポリシーは、
                                独自のポリシーを指定していません。
                              タイプ: string
                            controlledResources:
                              description: 推奨のタイプを指定します。
                                はVPAによって計算されます (場合によっては適用されます) 。 そうでない場合
                                指定されたデフォルトの [ResourceCPU, ResourceMemory]
                                は使用されます。
                              items:
                                description: ResourceNameは、さまざまなものを識別する名前です。
                                  ResourceList内のリソース。
                                タイプ: string
                              タイプ: 配列
                            controlledValues:
                              description: 制御するリソース値を指定します。
                                デフォルトは "RequestsAndLimits" です。
                              enum:
                              -RequestsAndLimits
                              -RequestsOnly
                              タイプ: string
                            maxAllowed:
                              additionalProperties:
                                anyOf:
                                -type: 整数
                                -type: 文字列
                                パターン: ^(\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))((([KMGTPE]i)|[numkMGTPE]|([eE](\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))?$
                                x-kubernetes-int-or-string: true
                              説明: リソースの最大量を指定します。
                                コンテナにお勧めします。 デフォルトは
                                最大値なし。
                              type: object
                            minAllowed:
                              additionalProperties:
                                anyOf:
                                -type: 整数
                                -type: 文字列
                                パターン: ^(\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))((([KMGTPE]i)|[numkMGTPE]|([eE](\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))?$
                                x-kubernetes-int-or-string: true
                              説明: リソースの最小量を指定します。
                                コンテナにお勧めします。 デフォルトは
                                最小値なし。
                              type: object
                            モード:
                              description: コンテナーに対してautoscalerが有効になっているかどうか。
                                デフォルトは "Auto" です。
                              enum:
                              -オート
                              -「オフ」
                              タイプ: string
                          type: object
                        タイプ: 配列
                    type: object
                  targetRef:
                    説明: TargetRefは、のセットを管理するコントローラを指します。
                      自動スケーラーが制御するポッド (Deployment、StatefulSetなど) 。
                      VerticalPodAutoscalerは、コントローラの実装をターゲットにできます
                      scaleサブリソース (ポッドセットはコントローラの
                      ScaleStatusまたはいくつかのよく知られているコントローラ (例: DaemonSet用)
                      ポッドセットはコントローラの仕様から読み取られます。 VerticalPodAutoscalerの場合
                      指定されたターゲットを使用できませんConfigUnsupported条件を報告します。
                      VerticalPodAutoscalerは完全な実装を必要としないことに注意してください
                      スケールサブリソースの-レプリカの変更には使用されません
                      推奨します。 取得される唯一のものは、ポッドに一致するラベルセレクターです
                      ターゲットリソースごとにグループ化されます。
                    プロパティ:
                      apiVersion:
                        description: 参照先のAPIバージョン
                        タイプ: string
                      kind:
                        説明: '参照先の種類; 詳細: https:// git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds "'
                        タイプ: string
                      名前:
                        説明: 'Name of the referent; 詳細: http:// kubernetes.io/docs/user-guide/identifiers#names'
                        タイプ: string
                    required:
                    -種類
                    -name
                    type: object
                    x-kubernetes-map-type: atomic
                  updatePolicy:
                    説明: 変更がどのように適用されるかに関するルールについて説明します。
                      ポッド。 指定しない場合、「PodUpdatePolicy」のすべてのフィールドは
                      をデフォルト値に設定します。
                    プロパティ:
                      minReplicas:
                        description: 生きている必要があるレプリカの最小数
                          のような他のチェック保留中のアップデータ
                          PDB) 。 正の値のみが許可されます。 global '-- min-replicas' をオーバーライドします。
                          フラグを設定します。
                        形式: int32
                        タイプ: integer
                      updateMode:
                        説明: autoscalerがポッドに変更を適用するときのコントロール
                          表します。 デフォルトは「自動」です。
                        enum:
                        -「オフ」
                        -初期
                        -再作成
                        -オート
                        タイプ: string
                    type: object
                required:
                -targetRef
                type: object
              状態:
                description: autoscalerに関する現在の情報。
                プロパティ:
                  条件:
                    説明: 条件は、これに必要な条件のセットです
                      autoscalerはターゲットをスケーリングし、それらかどうかを示します
                      条件が満たされます。
                    items:
                      description: VerticalPodAutoscalerConditionは状態を説明します。
                        ある時点でVerticalPodAutoscalerの
                      プロパティ:
                        lastTransitionTime:
                          description: lastTransitionTimeは条件の最後の時間です
                            あるステータスから別のステータスに移行
                          形式: date-time
                          タイプ: string
                        message:
                          description: メッセージは、を含む人間が読める説明です
                            移行に関する詳細
                          タイプ: string
                        理由:
                          description: reasonは、条件の最後の遷移の理由です。
                          タイプ: string
                        ステータス:
                          description: statusは条件のステータスです (True、False、
                            不明)
                          タイプ: string
                        type:
                          description: typeは現在の条件を説明します
                          タイプ: string
                      required:
                      - status
                      -タイプ
                      type: object
                    タイプ: 配列
                  おすすめ:
                    description: 最も最近計算されたリソースの推奨量
                      制御されているポッドのautoscalerによって
                    プロパティ:
                      containerRecommendations:
                        説明: 各自動スケーラーが推奨するリソース
                          コンテナーを使用します。
                        items:
                          説明: RecommendedContainerResourcesは推奨です
                            特定のコンテナに対してautoscalerによって計算されたリソースの
                            仕様にコンテナリソースポリシーが存在する場合は、
                            特に推奨は容器のために作り出されません
                            'ContainerScalingMode' が 'Off' に設定されています。
                          プロパティ:
                            containerName:
                              description: コンテナーの名前。
                              タイプ: string
                            lowerBound:
                              additionalProperties:
                                anyOf:
                                -type: 整数
                                -type: 文字列
                                パターン: ^(\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))((([KMGTPE]i)|[numkMGTPE]|([eE](\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))?$
                                x-kubernetes-int-or-string: true
                              description: リソースの最小推奨量。 観察
                                ContainerResourcePolicy。 この金額は保証されていません
                                アプリケーションが安定した状態で動作するのに十分であること
                                ただし、より少ないリソースで実行すると、
                                パフォーマンス /可用性に大きな影響を与えます。
                              type: object
                            ターゲット:
                              additionalProperties:
                                anyOf:
                                -type: 整数
                                -type: 文字列
                                パターン: ^(\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))((([KMGTPE]i)|[numkMGTPE]|([eE](\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))?$
                                x-kubernetes-int-or-string: true
                              description: リソースの推奨量。 ContainerResourcePolicyを観察します。
                              type: object
                            uncappedTarget:
                              additionalProperties:
                                anyOf:
                                -type: 整数
                                -type: 文字列
                                パターン: ^(\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))((([KMGTPE]i)|[numkMGTPE]|([eE](\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))?$
                                x-kubernetes-int-or-string: true
                              description: 最新の推奨リソースターゲット
                                に基づいて、制御されたポッドの自動スケーラーによって計算されます。
                                実際のリソース使用量のみ、考慮しない
                                ContainerResourcePolicy。 推奨事項と異なる場合があります
                                実際のリソース使用によりターゲットが違反する場合は
                                ContainerResourcePolicy (MinAllowedまたはより低い)
                                MaxAllowedより高い。 ステータス表示としてのみ使用され、
                                は実際のリソース割り当てには影響しません。
                              type: object
                            upperBound:
                              additionalProperties:
                                anyOf:
                                -type: 整数
                                -type: 文字列
                                パターン: ^(\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))((([KMGTPE]i)|[numkMGTPE]|([eE](\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))?$
                                x-kubernetes-int-or-string: true
                              description: リソースの最大推奨量。 観察
                                ContainerResourcePolicy。 を超えて割り当てられたリソース
                                この値はおそらく無駄になります。 この値はより大きいかもしれません
                                アプリケーションの最大量よりも実際に可能です
                                消費の。
                              type: object
                          required:
                          -ターゲット
                          type: object
                        タイプ: 配列
                    type: object
                type: object
            required:
            -spec
            type: object
        サーブ: true
        ストレージ: true
        サブリソース: {}
      -非推奨: true
        deprecationWarning: autoscaling.k8s.io/v1beta2 APIは非推奨です
        名前: v1beta2
        スキーマ:
          openAPIV3Schema:
            説明: VerticalPodAutoscalerは垂直ポッドの構成です
              履歴に基づいてポッドリソースを自動的に管理するautoscaler
              そしてリアルタイムのリソース利用。
            プロパティ:
              apiVersion:
                説明: 'APIVersionは、この表現のバージョン管理されたスキーマを定義します。
                  オブジェクトの サーバーは認識されたスキーマを最新のものに変換する必要があります
                  認識されない値を拒否する場合があります。 詳細: https:// git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
                タイプ: string
              kind:
                description: 'KindはRESTリソースを表す文字列値です。
                  オブジェクトはを表します。 サーバーは、クライアントのエンドポイントからこれを推測する可能性があります
                  にリクエストを送信します。 更新できません。 キャメルケースで。 詳細: https:// git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                タイプ: string
              metadata:
                type: object
              仕様:
                description: 'オートスケーラの動作の仕様。 より多くの情報:
                  https:// git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status。
                プロパティ:
                  resourcePolicy:
                    説明: 自動スケーラーが推奨リソースを計算する方法を制御します。
                      リソースポリシーを使用して、推奨事項に制約を設定できます。
                      個々の容器のため。 指定しない場合、autoscalerは
                      追加なしで、ポッド内のすべてのコンテナに推奨されるリソース
                      を使用します。
                    プロパティ:
                      containerPolicies:
                        description: コンテナーごとのリソースポリシー。
                        items:
                          説明: ContainerResourcePolicyが自動スケーラーの制御方法
                            は、特定のコンテナの推奨リソースを計算します。
                          プロパティ:
                            containerName:
                              説明: コンテナーまたはDefaultContainerResourcePolicyの名前、
                                この場合、ポリシーは、
                                独自のポリシーを指定していません。
                              タイプ: string
                            maxAllowed:
                              additionalProperties:
                                anyOf:
                                -type: 整数
                                -type: 文字列
                                パターン: ^(\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))((([KMGTPE]i)|[numkMGTPE]|([eE](\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))?$
                                x-kubernetes-int-or-string: true
                              説明: リソースの最大量を指定します。
                                コンテナにお勧めします。 デフォルトは
                                最大値なし。
                              type: object
                            minAllowed:
                              additionalProperties:
                                anyOf:
                                -type: 整数
                                -type: 文字列
                                パターン: ^(\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))((([KMGTPE]i)|[numkMGTPE]|([eE](\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))?$
                                x-kubernetes-int-or-string: true
                              説明: リソースの最小量を指定します。
                                コンテナにお勧めします。 デフォルトは
                                最小値なし。
                              type: object
                            モード:
                              description: コンテナーに対してautoscalerが有効になっているかどうか。
                                デフォルトは "Auto" です。
                              enum:
                              -オート
                              -「オフ」
                              タイプ: string
                          type: object
                        タイプ: 配列
                    type: object
                  targetRef:
                    説明: TargetRefは、のセットを管理するコントローラを指します。
                      自動スケーラーが制御するポッド (Deployment、StatefulSetなど) 。
                      VerticalPodAutoscalerは、コントローラの実装をターゲットにできます
                      scaleサブリソース (ポッドセットはコントローラの
                      ScaleStatusまたはいくつかのよく知られているコントローラ (例: DaemonSet用)
                      ポッドセットはコントローラの仕様から読み取られます。 VerticalPodAutoscalerの場合
                      指定されたターゲットを使用できませんConfigUnsupported条件を報告します。
                      VerticalPodAutoscalerは完全な実装を必要としないことに注意してください
                      スケールサブリソースの-レプリカの変更には使用されません
                      推奨します。 取得される唯一のものは、ポッドに一致するラベルセレクターです
                      ターゲットリソースごとにグループ化されます。
                    プロパティ:
                      apiVersion:
                        description: 参照先のAPIバージョン
                        タイプ: string
                      kind:
                        説明: '参照先の種類; 詳細: https:// git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds "'
                        タイプ: string
                      名前:
                        説明: 'Name of the referent; 詳細: http:// kubernetes.io/docs/user-guide/identifiers#names'
                        タイプ: string
                    required:
                    -種類
                    -name
                    type: object
                    x-kubernetes-map-type: atomic
                  updatePolicy:
                    説明: 変更がどのように適用されるかに関するルールについて説明します。
                      ポッド。 指定しない場合、「PodUpdatePolicy」のすべてのフィールドは
                      をデフォルト値に設定します。
                    プロパティ:
                      updateMode:
                        説明: autoscalerがポッドに変更を適用するときのコントロール
                          表します。 デフォルトは「自動」です。
                        enum:
                        -「オフ」
                        -初期
                        -再作成
                        -オート
                        タイプ: string
                    type: object
                required:
                -targetRef
                type: object
              状態:
                description: autoscalerに関する現在の情報。
                プロパティ:
                  条件:
                    説明: 条件は、これに必要な条件のセットです
                      autoscalerはターゲットをスケーリングし、それらかどうかを示します
                      条件が満たされます。
                    items:
                      description: VerticalPodAutoscalerConditionは状態を説明します。
                        ある時点でVerticalPodAutoscalerの
                      プロパティ:
                        lastTransitionTime:
                          description: lastTransitionTimeは条件の最後の時間です
                            あるステータスから別のステータスに移行
                          形式: date-time
                          タイプ: string
                        message:
                          description: メッセージは、を含む人間が読める説明です
                            移行に関する詳細
                          タイプ: string
                        理由:
                          description: reasonは、条件の最後の遷移の理由です。
                          タイプ: string
                        状態:
                          description: statusは条件のステータスです (True、False、
                            不明)
                          タイプ: string
                        type:
                          description: typeは現在の条件を説明します
                          タイプ: string
                      required:
                      - status
                      -タイプ
                      type: object
                    タイプ: 配列
                  おすすめ:
                    description: 最も最近計算されたリソースの推奨量
                      制御されているポッドのautoscalerによって
                    プロパティ:
                      containerRecommendations:
                        説明: 各自動スケーラーが推奨するリソース
                          レイヤー7プロトコルを提供します。
                        items:
                          説明: RecommendedContainerResourcesは推奨です
                            特定のコンテナに対してautoscalerによって計算されたリソースの
                            仕様にコンテナリソースポリシーが存在する場合は、
                            特に推奨は容器のために作り出されません
                            'ContainerScalingMode' が 'Off' に設定されています。
                          プロパティ:
                            containerName:
                              description: コンテナーの名前。
                              タイプ: string
                            lowerBound:
                              additionalProperties:
                                anyOf:
                                -type: 整数
                                -type: 文字列
                                パターン: ^(\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))((([KMGTPE]i)|[numkMGTPE]|([eE](\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))?$
                                x-kubernetes-int-or-string: true
                              description: リソースの最小推奨量。 観察
                                ContainerResourcePolicy。 この金額は保証されていません
                                アプリケーションが安定した状態で動作するのに十分であること
                                ただし、より少ないリソースで実行すると、
                                パフォーマンス /可用性に大きな影響を与えます。
                              type: object
                            ターゲット:
                              additionalProperties:
                                anyOf:
                                -type: 整数
                                -type: 文字列
                                パターン: ^(\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))((([KMGTPE]i)|[numkMGTPE]|([eE](\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))?$
                                x-kubernetes-int-or-string: true
                              description: リソースの推奨量。 ContainerResourcePolicyを観察します。
                              type: object
                            uncappedTarget:
                              additionalProperties:
                                anyOf:
                                -type: 整数
                                -type: 文字列
                                パターン: ^(\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))((([KMGTPE]i)|[numkMGTPE]|([eE](\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))?$
                                x-kubernetes-int-or-string: true
                              description: 最新の推奨リソースターゲット
                                に基づいて、制御されたポッドの自動スケーラーによって計算されます。
                                実際のリソース使用量のみ、考慮しない
                                ContainerResourcePolicy。 推奨事項と異なる場合があります
                                実際のリソース使用によりターゲットが違反する場合は
                                ContainerResourcePolicy (MinAllowedまたはより低い)
                                MaxAllowedより高い。 ステータス表示としてのみ使用され、
                                は実際のリソース割り当てには影響しません。
                              type: object
                            upperBound:
                              additionalProperties:
                                anyOf:
                                -type: 整数
                                -type: 文字列
                                パターン: ^(\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))((([KMGTPE]i)|[numkMGTPE]|([eE](\+ |-)?(([0-9]+(\.[0-9]*))?)|(\.[0-9]+))?$
                                x-kubernetes-int-or-string: true
                              description: リソースの最大推奨量。 観察
                                ContainerResourcePolicy。 を超えて割り当てられたリソース
                                この値はおそらく無駄になります。 この値はより大きいかもしれません
                                アプリケーションの最大量よりも実際に可能です
                                消費の。
                              type: object
                          required:
                          -ターゲット
                          type: object
                        タイプ: 配列
                    type: object
                type: object
            required:
            -spec
            type: object
        サーブ: true
        storage: false 

  3. vertical-pod-autoscalerのコンポーネントをインストールします。

    vertical-pod-autoscalerには、admission-controller、recommender、およびupdaterのコンポーネントが含まれています。

    説明

    admission-controllerコンポーネントをインストールする前に、スクリプトを使用してwebhookの証明書を生成する必要があります。

    • Kubernetesバージョンが1.22より前のクラスターのYAMLテンプレート

      インストールadmission-controller

      apiVersion: apps/v1
      kind: 配置
      メタデータ:
        名前: vpa-admission-controller
        名前空間: kube-system
      spec:
        replicas: 1
        セレクタ:
          matchLabels:
            アプリ: vpa-admission-controller
        template:
          metadata:
            labels:
              アプリ: vpa-admission-controller
          仕様:
            serviceAccountName: admin
            コンテナ:
              -name: 入学コントローラー
                画像: registry.cn-hangzhou.aliyuncs.com/acs/vpa-admission-controller:0.7.0
                imagePullPolicy: Always
                env:
                  - name: NAMESPACE
                    valueFrom:
                      fieldRef:
                        fieldPath: metadata.namespace
                volumeMounts:
                  -name: tls-certs
                    mountPath: "/etc/tls-certs"
                    readOnly: true
                resources:
                  limits:
                    cpu: 200m
                    メモリ: 500Mi
                  requests:
                    cpu: 50m
                    memory: 200Mi
                ポート:
                  -containerPort: 8000
            volumes:
              -name: tls-certs
                秘密:
                  secretName: vpa-tls-certs
      ---
      apiVersion: v1
      種類: サービス
      メタデータ:
        名前: vpa-webhook
        名前空間: kube-system
      spec:
        ポート:
          - port: 443
            targetPort: 8000
        セレクタ:
          アプリ: vpa-admission-controller 

      recommenderのインストール

      apiVersion: apps/v1
      kind: 配置
      メタデータ:
        名前: vpa-recommender
        名前空間: kube-system
      spec:
        replicas: 1
        セレクタ:
          matchLabels:
            アプリ: vpa-recommender
        template:
          metadata:
            labels:
              アプリ: vpa-recommender
          仕様:
            serviceAccountName: admin
            コンテナ:
            -name: recommender
              画像: registry.cn-hangzhou.aliyuncs.com/acs/vpa-recommender:0.7.0
              imagePullPolicy: Always
              resources:
                limits:
                  cpu: 200m
                  メモリ: 1000Mi
                requests:
                  cpu: 50m
                  メモリ: 500Mi
              ポート:
              -containerPort: 8080 

      updaterのインストール

      apiVersion: apps/v1
      kind: 配置
      メタデータ:
        名前: vpa-updater
        名前空間: kube-system
      spec:
        replicas: 1
        セレクタ:
          matchLabels:
            アプリ: vpa-updater
        template:
          metadata:
            labels:
              アプリ: vpa-updater
          仕様:
            serviceAccountName: admin
            コンテナ:
              -name: updater
                画像: registry.cn-hangzhou.aliyuncs.com/acs/vpa-updater:0.7.0
                imagePullPolicy: Always
                resources:
                  limits:
                    cpu: 200m
                    メモリ: 1000Mi
                  requests:
                    cpu: 50m
                    メモリ: 500Mi
                ポート:
                  -containerPort: 8080 

    • Kubernetesバージョンが1.22以降のクラスターのYAMLテンプレート

      インストールadmission-controller

      apiVersion: apps/v1
      kind: 配置
      メタデータ:
        名前: vpa-admission-controller
        名前空間: kube-system
      spec:
        replicas: 1
        セレクタ:
          matchLabels:
            アプリ: vpa-admission-controller
        template:
          metadata:
            labels:
              アプリ: vpa-admission-controller
          仕様:
            serviceAccountName: vpa-admission-controller
            securityContext:
              runAsNonRoot: true
              runAsUser: 65534# 誰も
            コンテナ:
              -name: 入学コントローラー
                画像: registry.cn-hangzhou.aliyuncs.com/acs/vpa-admission-controller:0.13.0
                imagePullPolicy: Always
                env:
                  - name: NAMESPACE
                    valueFrom:
                      fieldRef:
                        fieldPath: metadata.namespace
                volumeMounts:
                  -name: tls-certs
                    mountPath: "/etc/tls-certs"
                    readOnly: true
                resources:
                  limits:
                    cpu: 200m
                    メモリ: 500Mi
                  requests:
                    cpu: 50m
                    memory: 200Mi
                ポート:
                  -containerPort: 8000
                  -名前: プロメテウス
                    containerPort: 8944
            volumes:
              -name: tls-certs
                秘密:
                  secretName: vpa-tls-certs
      ---
      apiVersion: v1
      種類: サービス
      メタデータ:
        名前: vpa-webhook
        名前空間: kube-system
      spec:
        ポート:
          - port: 443
            targetPort: 8000
        セレクタ:
          アプリ: vpa-admission-controller 

      recommenderのインストール

      apiVersion: apps/v1
      kind: 配置
      メタデータ:
        名前: vpa-recommender
        名前空間: kube-system
      spec:
        replicas: 1
        セレクタ:
          matchLabels:
            アプリ: vpa-recommender
        template:
          metadata:
            labels:
              アプリ: vpa-recommender
          仕様:
            serviceAccountName: vpa-recommender
            securityContext:
              runAsNonRoot: true
              runAsUser: 65534# 誰も
            コンテナ:
            -name: recommender
              画像: registry.cn-hangzhou.aliyuncs.com/acs/vpa-recommender:0.13.0
              imagePullPolicy: Always
              resources:
                limits:
                  cpu: 200m
                  メモリ: 1000Mi
                requests:
                  cpu: 50m
                  メモリ: 500Mi
              ポート:
              -名前: プロメテウス
                containerPort: 8942 

      updaterのインストール

      apiVersion: apps/v1
      kind: 配置
      メタデータ:
        名前: vpa-updater
        名前空間: kube-system
      spec:
        replicas: 1
        セレクタ:
          matchLabels:
            アプリ: vpa-updater
        template:
          metadata:
            labels:
              アプリ: vpa-updater
          仕様:
            serviceAccountName: vpa-updater
            securityContext:
              runAsNonRoot: true
              runAsUser: 65534# 誰も
            コンテナ:
              -name: updater
                画像: registry.cn-hangzhou.aliyuncs.com/acs/vpa-updater:0.13.0
                imagePullPolicy: Always
                env:
                  - name: NAMESPACE
                    valueFrom:
                      fieldRef:
                        fieldPath: metadata.namespace
                resources:
                  limits:
                    cpu: 200m
                    メモリ: 1000Mi
                  requests:
                    cpu: 50m
                    メモリ: 500Mi
                ポート:
                  -名前: プロメテウス
                    containerPort: 8943 

vertical-pod-autoscalerがインストールされていることを確認する

  1. 次のYAMLファイルを使用して、nginx-Deployment-basicという名前のデプロイとnginx-deployment-basic-VPAという名前のvpaリソースを作成します。

    クリックして詳細を表示

    apiVersion: apps/v1
    kind: 配置
    メタデータ:
      name: nginx-deployment-basic
      ラベル:
        アプリ: nginx
    spec:
      レプリカ:2
      セレクタ:
        matchLabels:
          アプリ:nginx
      template:
        metadata:
          labels:
            アプリ:nginx
        仕様:
          containers:
          - name: nginx
            image: nginx:1.7.9
            ポート:
            -containerPort: 80
    ---
    apiVersion: autoscaling.k8s.io/v1
    kind: VerticalPodAutoscaler
    メタデータ:
      名前: nginx-deployment-basic-vpa
    spec:
      targetRef:
        apiVersion: "apps/v1"
        kind: 配置
        名前: nginx-deployment-basic
      updatePolicy:
        updateMode: "オフ" 

    説明

    updateModeOffに設定し、Deploymentの設定でrequestsフィールドとlimitsフィールドを空のままにします。

  2. 次のコマンドを実行して、縦型-pod-autoscalerがデプロイに推奨するCPUリクエストとメモリリクエストを照会します。

    説明

    コマンドを実行してから2分後に出力が返されます。

    kubectl describe vpa nginx-deployment-basic-vpa

    次の出力は、推奨されるリソースリクエストの例を示します。

    クリックして詳細を表示

    勧告:
        コンテナの推奨事項:
          コンテナ名: nginx
          下限:
            Cpu: 25m
            メモリ: 262144k
          ターゲット:
            Cpu: 25m
            メモリ: 262144k
          キャップなしターゲット:
            Cpu: 25m
            メモリ: 262144k
          上限:
            Cpu: 11601m
            メモリ: 12128573170 

    推奨事項に基づいて、デプロイのリソースリクエストを指定できます。 vertical-pod-autoscalerは、デプロイメントのリソース使用状況を継続的に監視し、リソース使用率を改善する方法について提案します。