k8s节点为NotReady的常见原因

本文详细介绍了 Kubernetes 节点出现NotReady状态的两种常见原因及排查步骤。首先,检查kubelet服务是否正常启动,通过journalctl查看相关日志;其次,确认cni插件是否安装,如未安装则需安装。如果getnode无法看到节点,可能涉及证书权限问题或系统环境配置错误,需分析 kubelet 和 apiserver 的日志进行故障排除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

k8s节点为NotReady


排查过程:


原因1: node节点的kubelet未启动


查看kubelet日志

# 查看node详情
kubectl get node -o yaml

# 查看你systemd守护进程管理的组件日志
## kubelet是systemd方式运行的
## 实时滚动显示某个Unit的最新日志
journalctl -u kubelet -f

# 只查看今天的kubelet日志
## |less可以解决日志显示不全的问题
journalctl -u kubelet --since today |less

解决办法:

systemctl enable --now kubelet

查看kube-proxy日志

# 查看Pod部署的组件日志
## k8s的其他组件都是pod运行的
kubectl logs kube-proxy-xxx -n kube-system
## 持续查看日志
kubectl logs -f kube-proxy-xxx -n kube-system

查看os日志

# 从OS中查看日志
tail /var/log/messages
# 持续查看OS日志
tail -f /var/log/messages

原因2:没有安装cni插件

解决办法: 安装cni插件
https://blog.youkuaiyun.com/omaidb/article/details/121283067


get node看不到节点

二进制:如果get node看不到节点,先判断是否get csr可以看到请求证书,如果能看到说明通信和启动没啥大问题

  1. 可能是kubelet请求证书没权限
# 创建cluster绑定
kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap

  1. 如果看不到说明kubelet启动有问题,可能是系统环境不满足(例如cgroups驱动swapselinux等)或者配置有问题。
    不管什么错误,重启kubelet,然后less命令从头查看/opt/kubernetes/logs/kubeletxxx.INFO日志,慢慢分析,找出警告或者错误日志~
# 查看kubelet日志
journalctl -u kubelet --since today |less

# 或
less /opt/kubernetes/logs/kubeletxxx.INFO

如果没有问题apiserver组件日志同样方式也分析下。

### GPU Stack Not Ready 错误解决方案 当遇到 GPU Stack Not Ready 的情况时,通常意味着与 GPU 相关的服务或驱动未能正常初始化或者配置不当。此类问题可能由多种因素引起,包括但不限于操作系统级别的错误、内核崩溃或其他严重问题[^1]。 对于 Kubernetes 集群中的 GPU 节点而言,如果发现节点状态显示为 `NotReady` 或者特定 Pod 处于等待资源的状态,则可能是由于 Kubelet 服务配置不兼容所引起的。针对这种情况的一种常见处理方式涉及调整 Kubelet 启动参数以适应更广泛的硬件支持需求: ```bash echo 'KUBELET_EXTRA_ARGS="--feature-gates SupportPodPidsLimit=false --feature-gates SupportNodePidsLimit=false"' > /etc/sysconfig/kubelet systemctl stop kubelet systemctl start kubelet systemctl status kubelet ``` 上述命令通过修改 `/etc/sysconfig/kubelet` 文件来设置额外的启动选项,并重启 Kubelet 服务使其生效[^2]。然而,在面对 GPU 设备管理的问题上,还需要进一步确认 NVIDIA Docker 和相关驱动程序已经正确安装并运行良好。 另外值得注意的是,某些应用程序(如 Elasticsearch/Kibana)可能会因为容器内部环境配置不足而报告类似的“未就绪”警告。确保这些应用能够稳定工作同样重要;例如,可以通过指定合适的镜像版本号以及合理的资源配置来进行优化: ```dockerfile docker run -id \ --name=k1 \ --restart=always \ -p 5601:5601 \ elasticsearch_version_here ``` 尽管这里给出的例子是关于 Kibana 的部署,但对于任何依赖 GPU 加速的应用来说,合理规划其运行条件都是必要的[^3]。 #### 关键检查项总结: - 检查操作系统的健康状况及其日志记录。 - 修改 Kubelet 参数以增强对不同设备的支持能力。 - 确认所有必需的 GPU 驱动和服务均已成功加载。 - 对具体使用的软件组件进行针对性调试和调优。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

教Linux的李老师

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值