MiddleДебаггингОчень частоЕщё не отвечали
Pod остаётся Pending без назначенного узла — что проверяете и в каком порядке?
Pod уже несколько минут в Pending без назначенного узла. Объясните, что значит Pending, затем по Events из describe найдите, почему планировщик не размещает его — и назовите прочие причины, которые различает то же сообщение.
$ kubectl get pod report-1
NAME READY STATUS RESTARTS AGE
report-1 0/1 Pending 0 3m
$ kubectl describe pod report-1
Events:
Warning FailedScheduling scheduler 0/3 nodes are available:
3 Insufficient memory.
Диагностируйте и исправьте.
Pending значит, что планировщик не разместил Pod. Строка FailedScheduling называет причину — здесь Insufficient memory: узел не вмещает memory requests. Прочее: taint, нет узла под nodeSelector/affinity или несвязанный PVC.
- ✗Путать
Pending(не размещён) с ещё-не-Ready работающим контейнером - ✗Игнорировать сообщение
FailedScheduling, называющее точную причину - ✗Считать причиной лишь ёмкость, упуская taints, affinity и привязку PVC
- →Чем отличалось бы сообщение
FailedSchedulingпри нетолерируемом taint? - →Почему снижение memory
requestдаёт размещение, но грозит OOM позже?
Оглавление
Решение
1. Что значит Pending
Pending = Pod принят API-сервером, но планировщик ещё не выбрал узел (или не может). Узел в kubectl get pod -o wide пуст.
2. Читаем причину планировщика
$ kubectl describe pod report-1 | sed -n '/Events/,$p'
Warning FailedScheduling 0/3 nodes are available: 3 Insufficient memory.
Сообщение прямо говорит: ни один из 3 узлов не вмещает requests.memory пода.
3. Причины и фиксы (по сообщению)
- Insufficient cpu/memory → снизить
requestsили добавить/освободить узлы; - node(s) had untolerated taint → добавить toleration или снять taint;
- didn't match nodeSelector/affinity → поправить метки узла или селектор;
- unbound PersistentVolumeClaim → нет провижнера/StorageClass — почините PVC.
Уменьшая request, помните: слишком низкий грозит OOM под нагрузкой.
Оглавление