一、Node节点Not Ready状态的可能原因
node节点状态为Not Ready可能的原因有:
1.网络插件出问题
有过安装经验的小伙伴应该很熟悉未安装网络插件的情况下node节点在集群中的状态为not ready
2.kubelet进程的问题
了解一下kubelet作用:
容器生命周期管理
资源管理与调度
容器网络配置
存储卷管理
与Master节点的通信
健康检查和事件生成
kubelet是在每个节点上运行的代理,它负责与kubernetes API服务器通信并注册节点。如果kubelet在节点上崩溃或停止,将无法与API Server通信并处于状态Not Ready。
- 资源稀缺
如果磁盘空间、内存等资源不足,会导致节点进入NotReady状态。
4.kube-proxy出问题
kube-proxy是运行在每个节点上并维护网络规则的网络代理。这些规则允许从集群内部或外部与您的pod进行网络通信,如果kube-proxy崩溃或停止,节点将处于状态Not Ready。
5.kubelet证书过期
二、排查node节点状态为Not Ready的原因
1.网络插件
查看容器状态:
kubectl get pod -A -o wide
查看网络路由:
ip route
查看网络配置:
ip addr/ifconfig
一方面确定网络插件在启动状态,多网络插件的情况下也没有出现网络配置错乱的情况,另一方面确保网络的路由情况没有出错。
2.kubelet进程
查看kubelet状态
systemctl status kubelet
如果kubelet状态不是running,而是activating(auto-restart)
查看kubelet的运行日志:
journalctl -u kubelet --since today | less
通过安装情况+报错日志推测出来应该是kubelet证书过期的结果,事实证明也的确是如此的原因。
- 资源稀缺
查看节点的资源情况
df -h
du -sh 路径
一般来说节点上的容器状态出现Evicted或ContainerStatusUnknown,可以优先考虑是磁盘资源不足的情况。若需清理磁盘空间,可参考k8s运维—系统磁盘资源占用率过高-CSDN博客
4.kube-proxy
查看kube-proxy pod的状态
kubectl get pod -n kube-system -o wide
若有问题:
kubectl describe pod podname -n kube-system
5.kubelet证书过期
众所周知,正常情况下k8s的证书为一年一换,不经意间可能会遇到证书过期的情况,所以要仔细查看日志内容中的关键内容,关于证书替换可以参看K8S证书过期解决办法之替换证书_kubelet证书过期了怎么处理-CSDN博客
本次的总结就到这里啦~~希望后续还有机会能继续学习
版权归原作者 Fiona_q 所有, 如有侵权,请联系我们删除。