Ответ
В Kubernetes есть два основных механизма автомасштабирования: Horizontal Pod Autoscaler (HPA) и Vertical Pod Autoscaler (VPA).
- Horizontal Pod Autoscaler (HPA) — это наиболее часто используемый механизм. Он автоматически увеличивает или уменьшает количество реплик Pod'ов в Deployment, StatefulSet или другом ресурсе на основе наблюдаемых метрик использования CPU, памяти или пользовательских метрик (custom metrics).
- Vertical Pod Autoscaler (VPA) — автоматически настраивает запросы (
requests) и лимиты (limits) ресурсов (CPU и памяти) для контейнеров в существующих Pod'ах. Это позволяет "вертикально" масштабировать Pod, не меняя их количество.
На практике HPA используется для реакции на изменение нагрузки, а VPA — для оптимизации использования ресурсов и предотвращения их нехватки.
Пример манифеста HPA, который масштабирует Deployment myapp от 1 до 10 реплик, поддерживая среднюю загрузку CPU на уровне 50%:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: myapp-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50