Настройка Vertical Pod Autoscalers (VPA)
1. Предварительные условия
-
У вас есть доступ к кластеру с учетной записью, имеющей роль
cluster-admin
в Kubernetes. -
Вы установили утилиту
kubectl
для работы с Kubernetes. -
Вы создали новое пространство имён. Например, с именем
test
.
2. Создание Deployment
Данный Deployment создаёт два пода, которые постепенно начинают утилизировать всё больше и больше ресурсов.
apiVersion: apps/v1
kind: Deployment
metadata:
name: hamster
namespace: test
spec:
selector:
matchLabels:
app: hamster
replicas: 2
template:
metadata:
labels:
app: hamster
spec:
securityContext:
runAsNonRoot: true
runAsUser: 65534
containers:
- name: hamster
image: registry.k8s.io/ubuntu-slim:0.1
resources:
requests:
cpu: 100m
memory: 50Mi
command: ["/bin/sh"]
args:
- "-c"
- "while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done"
3. Создание VPA
Данный VPA начинает следить за потреблением ресурсов CPU и Memory подов Deployment, который был создан ранее.
apiVersion: "autoscaling.k8s.io/v1"
kind: VerticalPodAutoscaler
metadata:
name: hamster-vpa
namespace: test
spec:
targetRef:
apiVersion: "apps/v1"
kind: Deployment
name: hamster
updatePolicy:
updateMode: "Auto"
resourcePolicy:
containerPolicies:
- containerName: '*'
minAllowed:
cpu: 100m
memory: 50Mi
maxAllowed:
cpu: 1
memory: 500Mi
controlledResources: ["cpu", "memory"]
4. Проверка
-
Зайдите в Web UI консоли Nova.
-
Перейдите на вкладку Workloads → Pods.
-
Подождите пока один из подов не перейдёт в статус Terminating, зайдите в него и перейдите на вкладку События.
-
Убедитесь, что VPA применился. Вы должны увидеть событие
Pod was evicted by VPA Updater to apply resource recommendation.