k8s节点status状态为notReady的解决方法【测试成功】

艺帆风顺 发布于 2025-04-02 21 次阅读


一、故障现象

集群节点建立后,status提示NotReady

    [root@jdmaster ~]# kubectl get nodesNAME STATUS ROLES AGE VERSIONjdmaster NotReady control-plane,master 3m34s v1.23.6jdnode-1 NotReady none> 106s v1.23.6jdnode-2 NotReady none> 106s v1.23.6

    二、故障排查

    最终解决:响应速度较慢,耐心等待3分钟左右恢复。

    1、检查节点的状态详细信息

      kubectl describe node jdmasterkubectl describe node jdnode-1kubectl describe node jdnode-2

          上述命令将提供关于节点详细信息的输出,可以查看其中的事件和条件,以获取有关节点状态的更多信息。

      2、检查 Flannel 日志

          可以查看 Flannel 容器的日志,以确定是否有任何与网络设置有关的问题。运行以下命令:

      kubectl logs -n kube-system kube-flannel-ds-POD_ID> -c kube-flannel

      替换 为实际的 Pod ID。检查是否有关于 Flannel 初始化或配置的错误。

       3、检查 kubelet 日志

      kubelet 是节点上负责与 Kubernetes API 通信的组件。查看 kubelet 的日志,以查找任何潜在的问题。

      journalctl -u kubelet

      4、检查网络插件是否正常运行

          确保 Flannel 或选择的网络插件正常运行,且没有错误。

      kubectl get pods -n kube-system

      确保所有的 kube-flannel-ds Pods 处于运行状态。

      5、检查网络配置:

          确保 Flannel 或者选择的网络插件的配置与你的集群网络环境相匹配。特别是,检查 Flannel 是否使用了正确的网络 CIDR。

      6、检查防火墙设置:

          确保节点之间的网络通信没有被防火墙规则阻止。

      7、检查 kube-proxy 配置:

          如果使用了自定义的 kube-proxy 配置,确保它与网络插件和集群环境兼容。

      8、重新启动 kubelet 和 Docker:

          尝试重新启动 kubelet 和 Docker 服务,有时这可以解决一些临时的问题。

        systemctl restart kubeletsystemctl restart docker

        9、检查硬件资源:

            确保节点有足够的硬件资源(CPU、内存)来运行 Kubernetes 组件。

        10、检查节点联通性:

            确保节点之间的网络连接是正常的,可以尝试在节点之间进行 ping 测试。