# VPA Autoscaler

VerticalPodAutoscaler (VPA) — компонент, предназначенный для автоматического регулирования запросов (requests) и лимитов (limits) ресурсов CPU и памяти для контейнеров в подах (Pods). В отличие от HorizontalPodAutoscaler (HPA), который изменяет количество подов, VPA изменяет вертикальный размер подов, корректируя ресурсы, запрашиваемые контейнерами.

> VPA может работать с объектами, управляющими подами: Deployment, StatefulSet, ReplicaSet, ReplicationController, а также DaemonSet (с ограничениями).


Поле updateMode позволяет выбрать режим работы контроллера. Есть несколько вариантов:

* `Off` – VPA не будет автоматически изменять ресурсные требования. Autoscaler подсчитывает рекомендации и хранит их в поле status объекта VPA;

* `Initial` – VPA устанавливает запросы на ресурсы только при создании pod'а и не меняет их потом;

* `Recreate` – VPA устанавливает запросы на ресурсы при создании pod'ов и обновляет их для существующих pod'ов, «вытесняя» (evict) в случаях, когда запрашиваемые ресурсы значительно отличаются от новой рекомендации;

* `Auto` — в настоящее время делает то же самое, что и Recreate. В будущем возможно использование обновлений без перезапуска (restart-free updates), когда этот механизм станет доступен (подробнее о нем рассказывается, например, в этом видео — прим. перев.).

## Пример

Создадим файл `test-vpa.yaml` с описанием ресурса `VerticalPodAutoscaler`:

```yaml
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
  name: test-vpa
spec:
  targetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: test-api-deploy
  updatePolicy:
    updateMode: "Auto"   # Возможные значения: "Off", "Initial", "Recreate", "Auto"
  resourcePolicy:
    containerPolicies:
    - containerName: "*"
      minAllowed:
        cpu: 100m
        memory: 50Mi
      maxAllowed:
        cpu: 8
        memory: 64Gi
      controlledResources: ["cpu", "memory"]
```

Создадим данный объект в кластере:

`kubectl create -f test-vpa.yaml`

----------

[4.3.6.6.4 Horizontal Pod Autoscaler Theme](./4.3.6.6.4%20HorizontalPodAAutoscaler.md)) | [Back To iOSWiki Contents](https://github.com/eldaroid/iOSWiki) | [4.3.6.6.6 k8s QOS Theme](./4.3.6.6.6%20k8sQOS.md)