问题发现:查看pod时,意外发现所有pod都显示Terminating,但在此之前并没有执行删除操作。
同一节点上所有pod都无法正常running说明是节点出现了故障,所以先查看节点信息
kubectl describe node wn51
kubelet stopped posting node status,发现报错是kubelet的问题
于是查看kubelet的服务状态:
systemctl status kubelet
Process: 1939179 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS (code=exited, status=1/FAILURE)
Main PID: 1939179 (code=exited, status=1/FAILURE)
错误信息:ExecStart: 这是 kubelet
服务的启动命令,(code=exited, status=1/FAILURE): 这个信息表明,kubelet
进程(PID 1939179)启动失败并退出了,退出状态码是 1
查看最近的kubelet运行日志:
sudo journalctl -xe -u kubelet
之后将报错信息复制给chat老师,看一下chat老师提供的分析结果。
chat老师给出的解决方案:
说明有可能是kubelet的版本问题,查看一下版本
kubectl version
发现问题:
问题在于kubectl的客户端和kubernetes的服务器之间版本超出了偏差范围。
解决方法:
显示了所有可用版本的 kubelet
包
apt-cache madison kubelet
安装对应版本的kubelet
sudo apt-get install kubelet=1.22.4-00
问题解决
错误原因:
可能是不小心升级了kubelet的版本,导致把所有的pod都删除了。
上面仅更新了kubelet的版本,下面将进一步更新kubectl的版本:
查看kubectl version
发现kubectl的版本依然是1.26.0
1,在当前目录下下载1.22.4版本的kubectl
curl -LO "https://dl.k8s.io/release/v1.22.4/bin/linux/amd64/kubectl"
2,下载完成后,需要确保 kubectl
二进制文件具有执行权限。执行以下命令
chmod +x ./kubectl
3,找到现有的文件,并进行替换
which kubectl
发现原本的kubectl位置在:/usr/bin/kubectl
sudo rm /usr/bin/kubectl #删除该文件
替换
sudo mv ./kubectl /usr/bin/kubectl
4,再次输入指令查看版本
成功将kubectl的版本降为1.22.4