Docs
uk8s
Cluster Elastic Scaling
Vertical Pod Autoscaler (VPA)

Vertical Pod Autoscaler (VPA)

1. Introduction to VPA

1.1. What is VPA

VPA is a tool that automatically adjusts vertical resources (CPU and memory) in a container. VPA adjusts Pod’s resource requests based on the actual use of resources in the container, ensuring that the Pod has enough resources during runtime.

1.2. Advantages of VPA

Advantages

  • Resource Optimization: VPA improves resource utilization by dynamically adjusting container resource requests.
  • Performance Improvement: VPA enhances application performance and stability by ensuring Pods have enough resources.
  • Automation: VPA can automatically adjust resources without human intervention.

1.2.1. Limitations of VPA

  1. Since VPA automatically adjusts the resource requests of Pods, Pods may be restarted in the background and may be scheduled to other nodes.

  2. Avoid using VPA and HPA simultaneously.

2. Installation

2.1. Prerequisites

  • Kubernetes 1.10+

2.2. Deployment

2.2.1. Deploy VPA service certificate

curl -sfL https://docs.ucloud-global.com/uk8s/yaml/vpa/gencerts.sh | sh -

2.3. Deploy VPA service

For 1.22 and later versions

kubectl apply -f https://docs.ucloud-global.com/uk8s/yaml/vpa/vpa.yaml

For versions below 1.22

kubectl apply -f https://docs.ucloud-global.com/uk8s/yaml/vpa/vpa-less-1.22.yaml

2.4. Deploy a VPA object

kubectl apply -f https://docs.ucloud-global.com/uk8s/yaml/vpa/deployment.yaml

3. View the VPA object

kubectl describe vpa nginx-vpa

The output of the above command is the value recommended by the VPA for the Deployment.

  Recommendation:
    Container Recommendations:
      Container Name:  nginx
      Lower Bound:
        Cpu:     25m
        Memory:  262144k
      Target:
        Cpu:     25m
        Memory:  262144k
      Uncapped Target:
        Cpu:     25m
        Memory:  262144k
      Upper Bound:
        Cpu:     50032m
        Memory:  107227776429