处理K8s节点NotReady状态的代理恢复流程
·
检查节点基础状态
通过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 -h和df -h检查内存/磁盘空间,若资源不足需扩容或清理。调整kubelet配置(如/var/lib/kubelet/config.yaml)中的evictionHard阈值。
检查API服务器连通性
在节点运行curl -k https://<控制平面IP>:6443测试API服务器可达性。若证书过期,需更新/etc/kubernetes/kubelet.conf或重新生成证书。
更多推荐
所有评论(0)