Kubernetes &引用;kubeadm升级应用v1.18.0-00“;似乎没有升级主节点
我在这里对kubeadm升级感到非常困惑 正如您从下面的屏幕剪辑中看到的,我的服务器版本在我的Mac上显示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
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。