Если у тебя 4 ноды в кластере, можно ли в replica count указать 5 или 6?

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

Ответ

Да, можно. Kubernetes примет манифест и создаст объект Deployment (или StatefulSet) с указанным количеством реплик. Однако он сможет запустить (schedule) на нодах только столько подов, сколько позволяют доступные ресурсы (CPU, память).

Что произойдет:

  • Поды, для которых хватило места на нодах, перейдут в состояние Running.
  • Оставшиеся пода останутся в состоянии Pending. Kube-scheduler будет постоянно пытаться их разместить, но не сможет из-за нехватки ресурсов.

Как это диагностировать:

kubectl get pods
# NAME                      READY   STATUS    RESTARTS   AGE
# myapp-5ffc6b8d46-2km4p   1/1     Running   0          10m
# myapp-5ffc6b8d46-8qjwx   1/1     Running   0          10m
# myapp-5ffc6b8d46-hjn12   1/1     Running   0          10m
# myapp-5ffc6b8d46-pqst7   1/1     Running   0          10m
# myapp-5ffc6b8d46-xcvd5   0/1     Pending   0          5m   # Не хватило ресурсов
# myapp-5ffc6b8d46-zxcvb   0/1     Pending   0          5m

kubectl describe pod myapp-5ffc6b8d46-xcvd5
# В событиях (Events) будет: "Warning  FailedScheduling   ... 0/4 nodes are available: 4 Insufficient cpu."

Решение: Добавить больше нод в кластер, увеличить ресурсы существующих нод, настроить resource requests/limits для пода или использовать механизмы автоматического масштабирования (Cluster Autoscaler).