Что такое Scaling в Kubernetes

«Что такое Scaling в Kubernetes» — вопрос из категории DevOps, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Scaling в Kubernetes — это процесс изменения количества подов (pods) или нод (nodes) для управления нагрузкой. Есть два основных типа:

  1. Horizontal Pod Autoscaler (HPA) — автоматически увеличивает/уменьшает количество подов на основе метрик (CPU, memory или custom metrics).
  2. Vertical Pod Autoscaler (VPA) — изменяет ресурсы (CPU/RAM) у существующих подов.

Пример 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: 70

Нюансы:

  • HPA требует метрики от Metrics Server или Prometheus.
  • VPA может требовать перезапуска подов.
  • Cluster Autoscaler масштабирует ноды, если не хватает ресурсов.