Ответ
В Kubernetes существует три основных механизма автоматического масштабирования, работающих на разных уровнях:
-
Horizontal Pod Autoscaler (HPA) — Горизонтальное масштабирование подов
- Что делает: Автоматически изменяет количество реплик (подов) для Deployment, ReplicaSet или StatefulSet.
- Как работает: HPA периодически запрашивает метрики (по умолчанию — загрузка CPU и использование памяти) у Metrics Server. Если текущие значения превышают или становятся значительно ниже целевых, HPA изменяет количество реплик.
- Пример: Если целевая загрузка CPU установлена на 50%, а средняя загрузка по всем подам достигает 75%, HPA создаст новые поды, чтобы снизить среднюю нагрузку.
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: myapp-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: myapp minReplicas: 2 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50
-
Vertical Pod Autoscaler (VPA) — Вертикальное масштабирование подов
- Что делает: Автоматически настраивает запросы (requests) и лимиты (limits) на CPU и память для существующих подов.
- Как работает: VPA анализирует историческое потребление ресурсов подами и предлагает оптимальные значения. Для применения новых значений VPA перезапускает под, что может привести к кратковременной недоступности.
- Основное применение: Чаще используется в режиме "рекомендаций" для подбора оптимальных
resources
на этапе разработки и тестирования.
-
Cluster Autoscaler (CA) — Масштабирование кластера
- Что делает: Автоматически добавляет или удаляет узлы (ноды, виртуальные машины) в кластере.
- Как работает: CA следит за подами в состоянии
Pending
. Если под не может быть размещен из-за нехватки ресурсов (CPU, RAM) на всех доступных нодах, CA обращается к API облачного провайдера (AWS, GCP, Azure) и заказывает новую ноду. Он также может удалять недостаточно загруженные ноды для экономии средств.
Ключевые особенности:
- HPA и VPA несовместимы: Нельзя одновременно использовать HPA и VPA для управления одними и теми же метриками (CPU/память).
- HPA идеально подходит для stateless-приложений.
- CA необходим в облачных средах для эффективного управления стоимостью инфраструктуры.