Compare languages | The vertical-pod-autoscaler module: FAQ

How do I view the Vertical Pod Autoscaler recommendations?

Как посмотреть рекомендации Vertical Pod Autoscaler?

You can view the VPA recommendations after the VerticalPodAutoscaler custom resource is created using the following command:

После создания custom resource VerticalPodAutoscaler посмотреть рекомендации VPA можно следующим образом:

shell kubectl describe vpa my-app-vpa

shell 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).

В секции status будут такие параметры:

  • Target — количество ресурсов, которое будет оптимальным для пода (в пределах resourcePolicy);
  • Lower Bound — минимальное рекомендуемое количество ресурсов для более или менее (но не гарантированно) хорошей работы приложения;
  • Upper Bound — максимальное рекомендуемое количество ресурсов. Скорее всего, ресурсы, выделенные сверх этого значения, идут в мусорку и совсем никогда не нужны приложению;
  • Uncapped Target — рекомендуемое количество ресурсов в самый последний момент, то есть данное значение считается на основе самых крайних метрик, не смотря на историю ресурсов за весь период.

How does Vertical Pod Autoscaler handle limits?

Как Vertical Pod Autoscaler работает с лимитами?

Example No. 1

Пример 1

Suppose we have a VPA object:

У нас есть VPA-объект:

yaml

apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: test2 spec: targetRef: apiVersion: “apps/v1” kind: Deployment name: test2 updatePolicy: updateMode: “Initial”

yaml

apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: test2 spec: targetRef: apiVersion: “apps/v1” kind: Deployment name: test2 updatePolicy: updateMode: “Initial”

Also, there is a Pod with the following resource configuration:

И есть под с такими ресурсами:

yaml resources: limits: cpu: 2 requests: cpu: 1

yaml resources: limits: cpu: 2 requests: cpu: 1

If the container consumes, say, 1 CPU and VPA recommendation for this container is 1.168 CPU, the module will calculate the ration between requests and limits. In our case, the ratio equals 100%. Thus, VPA will modify the Pod’s resource configuration when the Pod is recreated:

В данном случае, если контейнер будет потреблять, к примеру, 1 CPU целиком и VPA порекомендует данному контейнеру 1,168 CPU, вычисляется ratio между реквестами и лимитами. В данном случае он будет равен 100%. В этом случае при пересоздании пода VPA модифицирует его и проставит такие ресурсы:

yaml resources: limits: cpu: 2336m requests: cpu: 1168m

yaml resources: limits: cpu: 2336m requests: cpu: 1168m

Example No. 2

Пример 2

Suppose we have a VPA object:

У нас есть VPA-объект:

yaml

apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: test2 spec: targetRef: apiVersion: “apps/v1” kind: Deployment name: test2 updatePolicy: updateMode: “Initial”

yaml

apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: test2 spec: targetRef: apiVersion: “apps/v1” kind: Deployment name: test2 updatePolicy: updateMode: “Initial”

Also, there is a Pod with the following resource configuration:

И есть под с такими ресурсами:

yaml resources: limits: cpu: 1 requests: cpu: 750m

yaml resources: limits: cpu: 1 requests: cpu: 750m

In our case, the ratio of requests and limits is 25%, and the resource configuration of the container will be as follows (given that VPA recommends 1.168 CPU):

В данном случае соотношение реквестов и лимитов будет равным 25%, и если VPA порекомендует для контейнера 1,168 CPU, то VPA изменит ресурсы контейнера таким образом:

yaml resources: limits: cpu: 1557m requests: cpu: 1168m

yaml resources: limits: cpu: 1557m requests: cpu: 1168m

To limit the maximum amount of resources, set the maxAllowed parameter in the object specification or use the Limit Range Kubernetes object.

Если вам необходимо ограничить максимальное количество ресурсов, которое может быть заданно для лимитов контейнера, необходимо использовать в спецификации VPA-объекта maxAllowed или использовать Limit Range объект Kubernetes.