今天升级一台3主的k8s集群的配置。升级其中一台后另外两个节点就出现Not Ready的状态。
升级之前最好把一些能停的应用停掉。或者能够通过增加临时节点来进行扩容,不然所有pod调度到其他节点,可能把其他节点压垮。没办法,只能把其他两台直接升级配置,然后重启。重启之后三台中有两台Not Ready。节点的Not Ready的凭据是kubelet上报的数据,所以首先重启下kubelet:
systemctl restart kubelet
重启后依然是Not Ready, 于是在Not Ready的节点上查看kubelet的日志:
# 查看Kubelet的所有日志 sudo journalctl -u kubelet # 查看最近的Kubelet日志 sudo journalctl -u kubelet -r # 查看最近两小时的Kubelet日志 sudo journalctl -u kubelet --since "2 hours ago"
发现报错:
"Error getting node" err="node \"txbj-164020-prod-tb-kubelet\" not found"
于是对比现在的主机名,发现确实不一样,于是使用hostnamectl修改主机名并重启kubelet:
hostnamectl set-hostname txbj-164020-prod-tb-kubelet systemctl restart kubelet
最后恢复正常
但是不知道为什么在控制台重启后主机名为什么会变,总之把我搞紧张了。