检查节点基础状态

通过kubectl get nodes确认节点状态是否为NotReady,使用kubectl describe node <节点名>查看详细事件,常见问题包括kubelet未运行、网络插件故障或资源不足。

验证kubelet服务状态

登录问题节点执行systemctl status kubelet,若服务未运行则启动服务:

systemctl start kubelet && systemctl enable kubelet

检查日志是否报错:

journalctl -u kubelet -n 50 --no-pager

排查容器运行时异常

执行crictl ps确认容器运行时(如containerd/docker)是否正常。若运行时崩溃,重启服务:

systemctl restart containerd  

或通过docker info验证Docker服务状态。

检查网络插件问题

若使用Calico/Flannel等CNI插件,查看Pod是否正常运行:

kubectl get pods -n kube-system | grep cni  

重新应用网络插件配置(以Calico为例):

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

清理节点并重新加入集群

若以上步骤无效,可尝试驱逐Pod并重置节点:

kubectl drain <节点名> --ignore-daemonsets --delete-local-data  
kubectl delete node <节点名>  

在节点上执行kubeadm reset -f后重新加入集群。

验证资源限制

通过free -hdf -h检查内存/磁盘空间,若资源不足需扩容或清理。调整kubelet配置(如/var/lib/kubelet/config.yaml)中的evictionHard阈值。

检查API服务器连通性

在节点运行curl -k https://<控制平面IP>:6443测试API服务器可达性。若证书过期,需更新/etc/kubernetes/kubelet.conf或重新生成证书。

更多推荐