2.5.4.2. VPA の推奨事項の自動適用
VPA を使用して Pod を自動的に更新するには、updateMode をInPlaceOrRecreate または Recreate に設定した特定のワークロードオブジェクトに対して VPA CR を作成します。
Pod がワークロードオブジェクト用に作成されると、VPA はコンテナーを継続的にモニターして、CPU およびメモリーのニーズを分析します。VPA は、CPU とメモリーに関する VPA の推奨事項を満たしていない Pod を更新し、VPA の推奨事項に基づいて新しいリソース制限と要求を使用するように変更します。この際、アプリケーションに設定されている Pod disruption budget も尊重されます。この推奨事項は、参照用に VPA CR の status フィールドに追加されます。
デフォルトで、ワークロードオブジェクトは、VPA が Pod を自動的に削除できるようにするためにレプリカを 2 つ以上指定する必要があります。この最小値よりも少ないレプリカを指定するワークロードオブジェクトは削除されません。これらの Pod を手動で削除すると、ワークロードオブジェクトが Pod を再デプロイします。VPA は推奨内容に基づいて新規 Pod を更新します。この最小値は、VPA の最小値の変更 に記載されているとおり、VerticalPodAutoscalerController オブジェクトを変更して変更できます。
InPlaceOrRecreate モードまたは Recreate モードの VPA CR の例
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: vpa-recommender
spec:
targetRef:
apiVersion: "apps/v1"
kind: Deployment
name: frontend
updatePolicy:
updateMode: "InPlaceOrRecreate"
- 1
- この VPA CR が管理するワークロードオブジェクトのタイプ。
- 2
- この VPA CR が管理するワークロードオブジェクトの名前。
- 3
- モードを
InPlaceOrRecreateまたはRecreateに設定します。-
そのまま再作成。VPA は、Pod を再作成することなく、新しいリソース要求でワークロードオブジェクトを更新しようとします。VPA がオブジェクトをその場で更新できない場合、VPA はオブジェクトを再作成します。 -
Recreate:VPA は、Pod 作成時にリソース要求を割り当て、既存の Pod を終了することで更新します。このモードが使用されることはほとんどありません。リソース要求の変更に応じて Pod を必ず再起動させたい場合に限定して使用します。
-
VPA によってリソースの推奨事項を決定し、推奨リソースを新しい Pod に適用するには、動作中の Pod がプロジェクト内に存在し、実行されている必要があります。
CPU やメモリーなどのワークロードのリソース使用量が安定している場合、VPA はリソースの推奨事項を数分で決定できます。ワークロードのリソース使用量が安定していない場合、VPA は正確な推奨を行うために、さまざまなリソース使用量の間隔でメトリクスを収集する必要があります。