Узел Kubernetes перестал отчитываться о состоянии
События «NodeNotReady: Node is not ready» и «Kubelet stopped posting node status» (NodeStatusUnknown) в Kubernetes: kubelet узла не отчитывается API-серверу. Узел выключен, перегружен, kubelet или среда контейнеров упали, или пропала сеть до API-сервера.
Что это значит
kubelet на каждом узле регулярно сообщает API-серверу, что узел жив. Если сообщений нет дольше заданного времени, узел переводится в NotReady или Unknown. Через несколько минут поды с такого узла начинают переноситься на другие, если у них есть куда.
Причины: узел выключен или перезагружается; kubelet или containerd упал; узлу не хватает памяти или диска, и kubelet сам сообщает, что узел не готов; сеть между узлом и API-сервером недоступна.
Как проверить
kubectl get nodes
kubectl describe node <узел> | grep -A15 Conditions
В условиях узла видно, что именно не так: MemoryPressure, DiskPressure, PIDPressure, Ready=Unknown. Затем на самом узле:
systemctl status kubelet containerd
journalctl -u kubelet --since "30 min ago" | tail -50
Что сделать
- Если узел выключен намеренно, вывести его из кластера штатно:
kubectl drain, затем выключение. - Если упал kubelet или containerd, разобраться в их журналах и перезапустить.
- При нехватке памяти или диска освободить ресурсы. Разбор узла по командам есть в статье «Разбор инцидента на Linux за десять команд».
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать