我刚刚做了升级实验。不知怎么搞砸了,因为实验中 Cloud Guru 没有提到我必须逐步从 1.24 升级到 1.25,然后是 1.26,然后是 1.27.2。我自己想通了,就这么做了。所有节点在 CLI 中都显示正确的版本。但是当我在控制节点中检查时,它显示工作节点使用的是 1.26.0。
我执行了排空、更新/升级 kubeadm、升级计划/应用 kubeadm,然后更新升级 kubelet 和 kubect。重新加载守护进程和 kubelet。在节点中,我改为执行了“sudo kubeadm upgrade node”。我遗漏了什么?
控制节点的输出,显示 worker1 和 worker2 位于 1.26.0 上
root@k8s-control:/# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-control Ready control-plane 5d14h v1.27.2
k8s-worker1 NotReady,SchedulingDisabled 5d13h v1.26.0
k8s-worker2 NotReady,SchedulingDisabled 5d13h v1.26.0
这是其中一个工作节点的输出,显示 1.27.2
root@k8s-worker2:/# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.2", GitCommit:"7f6f68fdabc4df88cfea2dcf9a19b2b830f1e647", GitTreeState:"clean", BuildDate:"2023-05-17T14:18:49Z", GoVersion:"go1.20.4", Compiler:"gc", Platform:"linux/amd64"}
root@k8s-worker2:/# kubectl version
WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short. Use --output=yaml|json to get the full version.
Client Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.2", GitCommit:"7f6f68fdabc4df88cfea2dcf9a19b2b830f1e647", GitTreeState:"clean", BuildDate:"2023-05-17T14:20:07Z", GoVersion:"go1.20.4", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v5.0.1
The connection to the server localhost:8080 was refused - did you specify the right host or port?
root@k8s-worker2:/# kubelet --version
Kubernetes v1.27.2
所以我刚开始学习 CKA。我已经有一段时间没有接触过 devops 类型的学习了。上次我获得了 Redhat 7 证书,然后学习了一段时间的 Openstack 并在实验室工作。但是自从 Covid 开始以来,我没有接触过任何与 Linux 相关的研究。我有点生疏了。无论如何,我的工作正在向 devops 发展,甚至我的头衔是 devops 工程师,但没有做太多与 devops 相关的东西。我主要从事负载均衡器和防火墙工作。我开始为 CKA 考试学习,我们公司有一种与 Kubernetes 相关的产品。我在升级实验室里得到了堆栈。我做了三次,但无法让控制器节点显示正确的版本,即使工作者使用正确的版本。
我将控制器和每个节点从 1.24.0 升级到了 1.27.2 版本。但是 Kubeadm get nodes 显示工作节点的版本为 1.26.0,而当您登录并在其 CLI 中检查时,其工作节点显示它们处于正确的版本。
以下是我执行的步骤。
在开始处理控制节点和工作节点之前,先清空它们。在节点上,我执行了“sudo kubeadm upgrade node”而不是升级计划和应用。
kubectl drain k8s-control --ignore-daemonsets --force
sudo apt-get update && \
sudo apt-get install -y --allow-change-held-packages kubeadm=1.27.2-00
sudo kubeadm upgrade plan v1.27.2
sudo kubeadm upgrade apply
Upgrade kubelet sudo apt-get update && \ sudo apt-get install -y --allow-change-held-packages kubelet=1.27.2-00 kubectl=1.27.2-00
sudo systemctl daemon-reload
sudo systemctl restart kubelet
kubectl uncordon k8s-control