Compare languages | Модуль vertical-pod-autoscaler: FAQ

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

How do I view the Vertical Pod Autoscaler recommendations?

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

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

shell kubectl describe vpa my-app-vpa

shell kubectl describe vpa my-app-vpa

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

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

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

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

How does Vertical Pod Autoscaler handle limits?

Пример 1

Example No. 1

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

Suppose we have a VPA object:

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

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

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:

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

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

Пример 2

Example No. 2

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

Suppose we have a VPA object:

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

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

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):

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

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

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

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