Вопрос с собеседования · DevOps

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

MiddleKubernetesPrometheus
Ещё спрашивают так:
  • Что такое HPA и Cluster Autoscaler?
  • Почему HPA не масштабирует под?
Коротко

HPA меняет число реплик по метрике: желаемые реплики = текущие × (текущее значение / целевое). Метрика CPU считается в процентах от requests — без requests HPA не работает. VPA меняет сами requests, Cluster Autoscaler (или Karpenter) добавляет узлы, когда поды не помещаются. KEDA масштабирует по внешним событиям — длине очереди, лагу Kafka, вплоть до нуля.

  • Нужен metrics-server (для CPU и памяти) или адаптер Prometheus для своих метрик
  • Стабилизация вниз (по умолчанию 5 минут) защищает от «пилы»
  • Масштабирование не мгновенное: метрика → решение → под → старт → прогрев

А ещё Для обработчиков очередей метрика CPU плохая — лучше лаг или длина очереди

Подробно

Расчёт. 4 реплики, средняя загрузка 90% от requests, цель 60% → ceil(4 × 90 / 60) = 6 реплик.

Почему не масштабирует:

  • не заданы requests — процент считать не от чего;
  • нет metrics-server или метрика недоступна (kubectl describe hpa);
  • достигнут maxReplicas;
  • поды в Pending: нет места на узлах, а Cluster Autoscaler не настроен.

Практика:

  • цель 50–70% CPU оставляет запас на время, пока поднимаются новые поды;
  • быстрый старт приложения ускоряет реакцию;
  • minReplicas не меньше 2–3 для отказоустойчивости;
  • не сочетать HPA и VPA на одной метрике CPU.

Пример

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata: { name: orders }
spec:
  scaleTargetRef: { apiVersion: apps/v1, kind: Deployment, name: orders }
  minReplicas: 3
  maxReplicas: 20
  metrics:
    - type: Resource
      resource: { name: cpu, target: { type: Utilization, averageUtilization: 60 } }

Что хотят услышать

  • Формула HPA и зависимость от requests.
  • VPA, Cluster Autoscaler, KEDA.
  • Причины, по которым масштабирование не срабатывает.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Меняет число реплик по метрике; CPU — % от requests
  • ✗HPA работает по CPU без requests — считает загрузку от ядер узла
  • ✗HPA подстраивает requests и limits пода под фактическое потребление ресурсов
  • ✗HPA добавляет узлы в кластер, когда подам не хватает места

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования