Kubernetes &引用;kubeadm升级应用v1.18.0-00“;似乎没有升级主节点

Kubernetes &引用;kubeadm升级应用v1.18.0-00“;似乎没有升级主节点,kubernetes,upgrade,kubectl,kubeadm,Kubernetes,Upgrade,Kubectl,Kubeadm,我在这里对kubeadm升级感到非常困惑 正如您从下面的屏幕剪辑中看到的,我的服务器版本在我的Mac上显示kubectl version-o json时停留在v1.17.2 当我在主节点上时,我发布了kubeadm升级计划,系统显示kubeadm升级应用v1.18.0进行升级 但是,升级后,我当前的版本仍然显示为v1.17.2 您可以从第三个屏幕剪辑中看到kubectl get nodes-o wide,所有节点都显示v1.18.0 但是,kubectl version-o json,仍然在v1

我在这里对kubeadm升级感到非常困惑

正如您从下面的屏幕剪辑中看到的,我的服务器版本在我的Mac上显示
kubectl version-o json
时停留在v1.17.2

当我在主节点上时,我发布了
kubeadm升级计划
,系统显示
kubeadm升级应用v1.18.0
进行升级

但是,升级后,我当前的版本仍然显示为v1.17.2

您可以从第三个屏幕剪辑中看到
kubectl get nodes-o wide
,所有节点都显示v1.18.0

但是,
kubectl version-o json
,仍然在v1.17.2中显示服务器版本

此外,我的k9s继续显示我的K8s版本:v1.17.2

补充问题

为什么在主节点上,当输入kubectl版本时,客户端和服务器版本会不同?这显示在下面的第二个到最后一个屏幕剪辑中

主节点上的kubectl不是既是客户机又是服务器吗?我的意思是,如果我使用ssh连接到主节点,并且使用kubectl,那么我不是在服务器本身上发出客户机请求吗?那么,客户机和服务器版本如何不同呢

有人能告诉我我做错了什么吗

提前谢谢。

问题在于
emacs
在/etc/kubernetes/manifests文件中创建了它的常规备份文件,这就造成了问题。我不确定为什么
kubectl
与这些备份文件有问题,但在我从目录中删除这些备份后,您可以看到我的
kubectl版本
与客户端和服务器版本匹配

谢谢你,尼克

我的评论:

请检查清单文件夹/etc/kubernetes/manifest,查看API服务器的任何备份文件。(例如kube apiserver.yaml.xxxx)。将这些文件移到其他地方,然后重新启动kubelet

受到Github上关于这个问题的讨论的启发

由于kubelet使用此文件夹中的每个文件,因此启动pod时,其中一个较旧的文件一定是赢家

此外,还有一个拉取请求(PR) 在这方面。结果是,在2020年1月17日,PR从neolit123:1.18-kubeadm-ugprade-rollback合并为master

这就是为什么下次从1.18.x更新k8s时不应该面对这个问题的原因:-)


希望对您有所帮助。

您是否有多个上下文,kubectl引用的kubeconfig文件中配置的集群?我没有多个上下文。我只是在用kubernetes-admin@kubernetes.Have您升级了
kubelet
和其他主机运行的应用程序?是的……我确实升级了所有节点(主节点和辅助节点)上的
kubelet
。我在线程中添加了显示此内容的屏幕剪辑。请检查清单文件夹
/etc/kubernetes/manifest
,查看API服务器的任何备份文件。(例如kube apiserver.yaml.xxxx)。将这些文件移到其他地方,然后重新启动kubelet。