Как называется механизм автомасштабирования в Kubernetes?

«Как называется механизм автомасштабирования в Kubernetes?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В 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