How do I view the Vertical Pod Autoscaler recommendations?
You can view the VPA recommendations after the VerticalPodAutoscaler custom resource is created using the following command:
kubectl describe vpa my-app-vpa
The status
will have the following parameters:
Target
— the optimal amount of resources for the Pod (within the resourcePolicy).Lower Bound
— the minimum recommended amount of resources for the regular operation of the application.Upper Bound
— the maximum recommended amount of resources. Most likely, the resources above this upper bound will never be used by the application.Uncapped Target
— the recommended amount of resources based on the latest metrics (the history of resource usage is ignored).
How does Vertical Pod Autoscaler handle limits?
Example No. 1
The following example shows a VPA object:
---
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: test2
spec:
targetRef:
apiVersion: "apps/v1"
kind: Deployment
name: test2
updatePolicy:
updateMode: "Initial"
The VPA object contains a Pod with the following resources:
resources:
limits:
cpu: 2
requests:
cpu: 1
If a container uses all the CPU, and VPA recommends 1.168 CPU for that container, then the ratio between requests and limits will be 100%. In this case, when recreating the Pod, VPA will modify it and set the following resources:
resources:
limits:
cpu: 2336m
requests:
cpu: 1168m
Example No. 2
The following example shows a VPA object:
---
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: test2
spec:
targetRef:
apiVersion: "apps/v1"
kind: Deployment
name: test2
updatePolicy:
updateMode: "Initial"
The VPA object contains a pod with resources:
resources:
limits:
cpu: 1
requests:
cpu: 750m
If the request-to-limit ratio is 25% and VPA recommends 1.168 CPU for the container, VPA will change the container resources as follows:
resources:
limits:
cpu: 1557m
requests:
cpu: 1168m
If you need to limit the maximum number of resources that can be allocated to container constraints, you should use maxAllowed
in the VPA object specification or use the Limit Range of the Kubernetes object.