Nó não está pronto
O que é um problema de nó não pronto?
Um erro "Node Not Ready" significa que o nó de trabalho do Kubernetes não está íntegro e não pode aceitar ou executar os Pods. Isso geralmente ocorre quando o kubelet para de se comunicar com o plano de controle ou quando o nó está enfrentando problemas de falta recursos ou de rede.
Dica: Quando um nó está com o status NotReady, o Kubernetes para de agendar novos Pods nesse nó e pode reagendar os Pods existentes neste nó para nós saudáveis.
Sintomas
- O status do nó muda para NotReady.
- Os pods permanecem nos estados Pending, Unknown, ou Terminating.
- Novos Pods não são agendados no nó afetado.
- Os aplicativos em execução no nó ficam indisponíveis.
Causas comuns
| Causa | Descrição |
|---|---|
| Falha no Kubelet | O serviço Kubelet parou ou está com problemas. |
| Falha no Runtime do Contêiner | O Docker ou containerd não está em execução. |
| Disco Cheio | O armazenamento do nó está esgotado ou disco under pressure. |
| Falta de Memória | O nó está ficando sem memória. |
| Falha de Rede | O nó não consegue se comunicar com o plano de controle. |
| Problema de DNS/Sincronização de Relógio | Problemas de DNS ou sincronização de relógio afetam a comunicação do nó. |
Como diagnosticar
- Verificar o estado do nó
kubectl get nodes
Saída esperada:
NAME STATUS ROLES AGE VERSION
node-1 Ready control-plane 129d v1.36.2
node-2 Ready control-plane 129d v1.36.2
node-3 Ready control-plane 46d v1.36.2
node-4 Ready worker 128d v1.36.2
node-5 Ready gpu,worker 99d v1.36.2
node-6 NotReady worker 128d v1.36.2
- Descreva o nó
kubectl describe node <node-name>
Analise:
- Conditions
- Events
- DiskPressure
- MemoryPressure
- NetworkUnavailable
- Verificar o status do Kubelet
systemctl status kubelet
systemctl status snap.microk8s.daemon-kubelite
Verifique se o serviço kubelet está ativo.
- Verificar o tempo de execução do contêiner
Para containerd:
systemctl status containerd
Para Docker :
systemctl status docker
- Verifique o disco e a memória
df -h
free -h
Procurar por:
- Disk full
- Memory exhaustion
- DiskPressure
- MemoryPressure
- Verifique a conectividade da rede
Verifique se o nó consegue se comunicar com o servidor da API do Kubernetes e certifique-se de que o DNS e a sincronização de tempo estejam funcionando corretamente.
Como consertar
- Reinicie o serviço kubelet.
- Reinicie o ambiente de execução do contêiner (containerd ou Docker).
- Corrija problemas de rede, DNS ou sincronização de horário.
- Libere espaço em disco ou resolva a pressão sobre a memória.
- Se necessário, esvazie e reinicie o nó.
Comandos importantes
kubectl get nodes
kubectl describe node <node-name>
systemctl status kubelet
systemctl restart kubelet
systemctl status containerd
systemctl restart containerd
df -h
free -h
Se estiver usando Docker
systemctl status docker
systemctl restart docker
Pontos-chave
NotReady significa que o nó não está íntegro ou não consegue se comunicar com o plano de controle do Kubernetes.
Comece porkubectl describe nodepara identificar a causa.
Verifique o kubelet, o tempo de execução do contêiner, o disco, a memória, a rede, o DNS e a sincronização do relógio.
Se o problema persistir após corrigir a causa raiz, drene, reinicie o nó e confirme se ele retorna ao estado Ready.