k8s节点变为NotReady状态

本文记录了一次在Kubernetes环境中修改主机名导致master节点状态变为notReady的教训。详细描述了问题的症状,包括flannelpod处于pending状态,以及通过查看kubelet服务日志发现的错误信息。最终解决方案是将主机名改回原名并重启master节点。

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

记录一个小教训。切记: k8s安装完成后不要轻易修改hostname。

问题:

k8s的master节点变为notReady,另外一个worker节点正常。
在这里插入图片描述

症状:master上的flannel pod显示为pending状态,但是describe pod没有有用信息,最后运行journalctl -f -u kubelet.service 日志中,发现节点名称的问题, 想起来刚才修改过主机名,然后问题就清楚了。
journalctl -f -u kubelet.service显示的日志信息

Mar 09 05:04:49 localhost.localdomain kubelet[5724]: E0309 05:04:49.636853    5724 kubelet.go:2248] node "localhost.localdomain" not found
Mar 09 05:04:49 localhost.localdomain kubelet[5724]: E0309 05:04:49.693945    5724 reflector.go:125] k8s.io/kubernetes/pkg/kubelet/config/apiserve
Mar 09 05:04:49 localhost.localdomain kubelet[5724]: E0309 05:04:49.696794    5724 reflector.go:125] k8s.io/kubernetes/pkg/kubelet/kubelet.go:453:
Mar 09 05:04:49 localhost.localdomain kubelet[5724]: E0309 05:04:49.699268    5724 reflector.go:125] k8s.io/kubernetes/pkg/kubelet/kubelet.go:444:
Mar 09 05:04:49 localhost.localdomain kubelet[5724]: I0309 05:04:49.732622    5724 kubelet_node_status.go:286] Setting node annotation to enable v
Mar 09 05:04:49 localhost.localdomain kubelet[5724]: E0309 05:04:49.736983    5724 kubelet.go:2248] node "localhost.localdomain" not found
Mar 09 05:04:49 localhost.localdomain kubelet[5724]: I0309 05:04:49.782223    5724 kubelet_node_status.go:72] Attempting to register node localhos
Mar 09 05:04:49 localhost.localdomain kubelet[5724]: E0309 05:04:49.782581    5724 kubelet_node_status.go:94] Unable to register node "localhost.l
Mar 09 05:04:49 localhost.localdomain kubelet[5724]: I0309 05:04:49.806613    5724 kubelet.go:1822] skipping pod synchronization - container runti
Mar 09 05:04:49 localhost.localdomain kubelet[5724]: I0309 05:04:49.807165    5724 plugin_manager.go:116] Starting Kubelet Plugin Manager
Mar 09 05:04:49 localhost.localdomain kubelet[5724]: E0309 05:04:49.807373    5724 eviction_manager.go:247] eviction manager: failed to get summar
Mar 09 05:04:49 localhost.localdomain kubelet[5724]: E0309 05:04:49.844272    5724 kubelet.go:2248] node "localhost.localdomain" not found

关键的一句就是node “localhost.localdomain” not found

解决办法:

最后将master机器的主机名修改为原先的名称, 重启master机器,

 hostnamectl set-hostname localhost.localdomain

重启master机器后,一切正常了

[root@localhostxxxxx]# kubectl get node
NAME                    STATUS   ROLES    AGE     VERSION
localhost.localdomain   Ready    master   7d21h   v1.15.0
node2                   Ready    <none>   7d20h   v1.15.0
当遇到k8snode节点notready问题时,可以按照以下步骤进行排查和解决: 1. 检查节点状态:使用命令 `kubectl get nodes` 检查节点状态,确保节点处于 `Ready` 状态。如果节点状态为 `NotReady`,则表示存在问题。 2. 检查节点事件:使用命令 `kubectl describe node <node-name>` 查看节点的事件,以了解是否有任何故障或异常情况。 3. 检查kubelet日志:使用命令 `journalctl -u kubelet -n 100` 查看kubelet的日志,以查找任何与节点notready相关的错误或警告信息。 4. 检查容器运行时日志:如果使用的是Docker作为容器运行时,可以使用命令 `journalctl -u docker -n 100` 查看Docker的日志。如果使用的是其他容器运行时,可以查找相应的日志文件。 5. 检查网络配置:确保节点能够与其他节点和控制平面正常通信。检查网络配置是否正确,并确保防火墙规则没有阻止必要的流量。 6. 检查资源使用情况:检查节点的资源使用情况,例如CPU、内存、存储等。确保节点上的资源充足以正常运行Pod。 7. 检查配置文件:检查节点的配置文件,例如kubelet配置文件、节点标签等。确保配置文件没有错误,并且节点的配置与集群的要求一致。 8. 重启kubelet服务:尝试重启kubelet服务,可以使用命令 `sudo systemctl restart kubelet`。重启后,观察节点状态是否变为Ready。 9. 联系硬件供应商:如果怀疑节点故障,例如硬件故障或操作系统崩溃,可以联系硬件供应商寻求支持。 10. 检查其他组件:如果以上步骤都没有解决问题,可以检查其他与节点相关的组件,例如网络插件、存储插件等。 在排查问题时,可以结合使用多个命令和工具,以获取更全面的信息和诊断结果。根据具体的情况,可能需要进一步查找相关文档或寻求社区的帮助来解决问题。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值