如何清理kubectl top nodes中重复显示的旧节点主机名?
嗨,这个问题我碰到过!其实是因为改主机名后,旧的节点对象还留在Kubernetes集群里,再加上metrics-server的缓存没更新,就导致重复显示了。按照下面的步骤来操作就能解决:
先找出旧节点
运行以下命令列出所有节点的详细信息:kubectl get nodes -o wide
对比你实际的4个集群节点,那些状态为NotReady、IP不匹配或者是旧主机名的,就是需要清理的目标节点。删除旧的节点对象
找到旧节点的主机名后,执行删除命令:kubectl delete node <旧节点主机名>
如果删除时提示节点仍处于连接状态,可以用强制删除命令:kubectl delete node <旧节点主机名> --force --grace-period=0刷新metrics-server的缓存
kubectl top依赖metrics-server提供数据,它可能还缓存着旧节点的监控信息,所以需要重启metrics-server让它重新采集数据:
先确认metrics-server所在的Pod(k3s中通常在kube-system命名空间):kubectl get pods -n kube-system | grep metrics-server
然后重启metrics-server的部署:kubectl rollout restart deployment metrics-server -n kube-system验证结果
等待几十秒让metrics-server完成重启和数据采集,再运行kubectl top nodes,应该就只会显示当前的4个正常节点了!
小提醒:以后如果需要修改节点主机名,建议先把节点从集群中移除(worker节点可执行k3s agent leave,server节点需注意高可用集群的操作规范),修改完成后再重新加入集群,这样就能避免留下这类幽灵节点啦。
备注:内容来源于stack exchange,提问作者slondr

