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.csdn.net/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组件日志同样方式也分析下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

教Linux的李老师

赞赏是第一生产力

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

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

打赏作者

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

抵扣说明:

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

余额充值