Ответ
Да, можно. 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).