master中“kubectl get node ”STATUS显示notready

当执行`kubectl get node`时,发现节点状态显示为notready。问题可能涉及Kubelet未正常报告状态、防火墙设置以及负载均衡器配置。解决方法包括重启节点组件,检查并关闭防火墙,重启LB中的nginx,以及检查kubelet配置文件。

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

错误显示:

kubectl get node

在这里插入图片描述

kubectl describe node 10.0.3.104
Conditions:
  Type             Status    LastHeartbeatTime                 LastTransitionTime                Reason                    Message
  ----             ------    -----------------                 ------------------                ------                    -------
  OutOfDisk        Unknown   Tue, 29 Jan 2019 11:06:05 +0800   Tue, 29 Jan 2019 11:06:45 +0800   NodeStatusUnknown         Kubelet stopped posting node status.
  MemoryPressure   Unknown   Tue, 29 Jan 2019 11:06:05 +0800   Tue, 29 Jan 2019 11:06:45 +0800   NodeStatusUnknown         Kubelet stopped posting node status.
  DiskPressure     Unknown   Tue, 29 Jan 2019 11:06:05 +0800   Tue, 29 Jan 2019 11:06:45 +0800   NodeStatusUnknown         Kubelet stopped posting node status.
  PIDPressure      False     Tue, 29 Jan 2019 11:06:05 +0800   Mon, 28 Jan 2019 15:11:01 +0800   KubeletHasSufficientPID   kubelet has sufficient PID available
  Ready            Unknown   Tue, 29 Jan 2019 11:06:05 +0800   Tue, 29 Jan 2019 11:06:45 +0800   NodeStatusUnknown         Kubelet stopped posting node status.

显示:Kubelet stopped posting node status.
继而在node104节点中,查看

tail /var/log/messages

在这里插入图片描述
解决办法:

<1> 重启node中的各个组件

systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet
systemctl restart kube-proxy

且通过ps -ef |grep kube查看各个组件的运行情况,注意看是否是当前时间的重启情况。如果未启动kubelet,在master中也是检查不到node的。

<2> 查看防火墙问题

systemctl status firewalld
----------执行
systemctl stop firewalld
systemctl enable firewalld

确保防火墙关闭
在这里插入图片描述
在LB负载均衡的服务器上,查看运行日志,可以实时监测k8s运行部署情况:

tail /var/log/nginx/k8s-access.log -f

在这里插入图片描述

<3> 重启LB中的nginx

使用负载均衡服务器后,需要修改kube-apiserver中的server地址,可能造成notfollow问题。可能原因是nginx未启动。

systemctl restart nginx

如果上面三个问题,满足了之后,即可实现follow。
在这里插入图片描述

<4> 在配置node时,修改了kubelet.config文件

在这里插入图片描述
该解决方法,可能会导致nofollow的情况,将该部分添加的内容去掉即可。

### 如何使用 `kubectl get nodes` 查看 Kubernetes 节点状态 通过运行 `kubectl get nodes` 命令可以列出 Kubernetes 集群中的所有节点及其状态信息[^1]。此命令不仅会返回节点名称,还会提供诸如节点状态(STATUS)、角色(ROLES)、年龄(AGE)以及版本(VERSION)等详细数据。 如果某些节点显示为 **NotReady** 状态,则可能表明这些节点存在配置或网络连接方面的问题[^2]。例如,在实际案例中曾有记录显示如下情况: ```bash [root@hellolic ~/k8s/kubeconfig]# kubectl get node NAME STATUS ROLES AGE VERSION 192.168.184.12 NotReady <none> 9h v1.12.3 ``` 上述输出表示该节点未能正常工作[^3]。当遇到此类问题时,通常需要进一步排查具体原因,比如检查 VIP 是否丢失或者重新启动相关服务来恢复正常的节点功能[^5]。 另外需要注意的是,有时候即使成功完成了节点加入集群的操作 (`kubeadm join`) ,但如果 Master 节点上的 kubelet 或其他组件未正确初始化也可能导致新成员无法被识别到[^4]。 因此为了确保能够准确获取当前集群内的全部活动节点状况,请确认以下几点后再尝试执行查询指令: - 所有的 Node 已经完成注册过程; - 各个服务器之间的通信无障碍; - 关键进程像 Nginx 和 Keepalived 正常运作; 以下是标准的命令形式用于展示各节点详情: ```bash $ kubectl get nodes ``` ### 示例输出 假设一切设置无误的话,您应该可以看到类似下面这样的结果: ```bash NAME STATUS ROLES AGE VERSION worker-node1 Ready <none> 1d v1.20.2 master-node Ready control-plane,master 2d v1.20.2 ``` 其中每列含义分别为:名字(Name),健康度(Status),职能(Roles),存活时间(Age) 及 版本(Version).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值