Планировщик не нашёл узел, куда поместить под
Событие FailedScheduling «0/6 nodes are available: 3 Insufficient memory, 3 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }»: под висит в Pending. Почему планировщик считает запросы, а не реальную загрузку, и что делать.
Что это значит
Под остаётся в состоянии Pending, а в событиях планировщик перечисляет, почему не подошёл ни один узел. Insufficient memory или Insufficient cpu значит, что на узле не хватает свободных запрошенных ресурсов. Планировщик складывает запросы (requests) всех подов узла, а не их реальное потребление: узел может быть загружен на треть и всё равно быть «полным». untolerated taint {node-role.kubernetes.io/control-plane: } значит, что узел управляющий и обычные поды на нём не размещаются, это нормально.
Как проверить
kubectl describe pod <под> -n <namespace> | grep -A10 Events
kubectl describe nodes | grep -A8 "Allocated resources"
Во втором выводе видно, сколько процентов памяти и процессора узла уже занято запросами.
Что сделать
- Сверить запросы подов с реальным потреблением (
kubectl top pods). Завышенные запросы освобождают место без новых узлов. - Если запросы честные, добавить узлы или ресурсы существующим.
- Не снимать taint с управляющих узлов, чтобы поместить приложение: при нехватке памяти пострадают компоненты самого кластера.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать