Где указывается количество реплик

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

Ответ

В Kubernetes количество реплик для stateless-приложений (пода) явно указывается в поле spec.replicas манифеста ресурсов, управляющих набором подов: Deployment, StatefulSet или ReplicaSet.

1. Deployment (наиболее распространённый случай):

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-web-app
spec:
  replicas: 3  # Желаемое количество идентичных реплик-подов
  selector:
    matchLabels:
      app: my-web-app
  template:
    # ... спецификация пода (контейнеры, volumes)

2. StatefulSet (для stateful-приложений с устойчивыми идентификаторами):

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: my-database
spec:
  replicas: 2  # Количество реплик для StatefulSet
  serviceName: "my-database"
  # ...

3. Горизонтальное автомасштабирование (HPA): Количество реплик может динамически меняться HPA на основе метрик (CPU, memory, custom). В этом случае spec.replicas в Deployment задаёт начальное/минимальное значение.

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: my-app-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-web-app
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70

Управление репликами через CLI:

# Масштабировать Deployment вручную
kubectl scale deployment/my-web-app --replicas=5

# Просмотреть текущее и желаемое количество реплик
kubectl get deployment my-web-app
# В выводе будут колонки READY (готовые) и AVAILABLE (доступные)