升级Master01节点

1、查看最新版本

[root@master01 ~]# yum list --showduplicates kubeadm

image-20231102092325375

2、升级kubeadm

[root@master01 ~]# yum install kubeadm-1.27.6-0 -y

验证下载操作正常,并且 kubeadm 版本正确

[root@master01 ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.6", GitCommit:"741c8db18a52787d734cbe4795f0b4ad860906d6", GitTreeState:"clean", BuildDate:"2023-09-13T09:19:54Z", GoVersion:"go1.20.8", Compiler:"gc", Platform:"linux/amd64"}

3、将Master01节点标记为不可调度

[root@master01 ~]# kubectl drain master01 --ignore-daemonsets

4、查看集群是否能够升级,观察到支持升级v1.27最高版本为v1.27.7

[root@master01 ~]# kubeadm upgrade plan

image-20231102093338925

5、执行升级

[root@master01 ~]# kubeadm upgrade apply v1.27.6

如果升级成功后,会出现以下字样

[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.27.6". Enjoy!

[upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.

6、升级kubelet和kubectl

[root@master01 ~]# yum install -y kubelet-1.27.6-0  kubectl-1.27.6-0

7、重启kubelet

systemctl daemon-reload
systemctl restart kubelet

8、恢复调度,上线

[root@master01 ~]# kubectl uncordon master01

升级Master02节点

1、Master02节点升级kubeadm

[root@master02 ~]# yum install kubeadm-1.27.6-0 -y

验证下载操作正常,并且 kubeadm 版本正确

[root@master02 ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.6", GitCommit:"741c8db18a52787d734cbe4795f0b4ad860906d6", GitTreeState:"clean", BuildDate:"2023-09-13T09:19:54Z", GoVersion:"go1.20.8", Compiler:"gc", Platform:"linux/amd64"}

2、将Master02节点标记为不可调度

[root@master02 ~]# kubectl drain master02 --ignore-daemonsets

3、Master02节点执行升级

[root@master01 ~]# kubeadm upgrade node

如果升级成功后,会出现以下字样

[upgrade] The configuration for this node was successfully updated!
[upgrade] Now you should go ahead and upgrade the kubelet package using your package manager.

4、Master02节点升级kubelet和kubectl

[root@master02 ~]# yum install -y kubelet-1.27.6-0  kubectl-1.27.6-0

5、Master02节点重启kubelet

systemctl daemon-reload
systemctl restart kubelet

6、Master02节点恢复调度,上线

[root@master01 ~]# kubectl uncordon master02

升级Master03节点

1、Master03节点升级kubeadm

[root@master03 ~]# yum install kubeadm-1.27.6-0 -y

验证下载操作正常,并且 kubeadm 版本正确

[root@master03 ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.6", GitCommit:"741c8db18a52787d734cbe4795f0b4ad860906d6", GitTreeState:"clean", BuildDate:"2023-09-13T09:19:54Z", GoVersion:"go1.20.8", Compiler:"gc", Platform:"linux/amd64"}

2、将Master03节点标记为不可调度

[root@master01 ~]# kubectl drain master03 --ignore-daemonsets

3、Master03节点执行升级

[root@master03 ~]# kubeadm upgrade node

如果升级成功后,会出现以下字样

[upgrade] The configuration for this node was successfully updated!
[upgrade] Now you should go ahead and upgrade the kubelet package using your package manager.

4、Master03节点升级kubelet和kubectl

[root@master01 ~]# yum install -y kubelet-1.27.6-0  kubectl-1.27.6-0

5、Master03节点重启kubelet

systemctl daemon-reload
systemctl restart kubelet

6、Master03节点恢复调度,上线

[root@master01 ~]# kubectl uncordon master03

升级node01节点

1、node01节点升级kubeadm

[root@node01 ~]# yum install kubeadm-1.27.6-0 -y

验证下载操作正常,并且 kubeadm 版本正确

[root@node01 ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.6", GitCommit:"741c8db18a52787d734cbe4795f0b4ad860906d6", GitTreeState:"clean", BuildDate:"2023-09-13T09:19:54Z", GoVersion:"go1.20.8", Compiler:"gc", Platform:"linux/amd64"}

2、将node01节点标记为不可调度

[root@master01 ~]# kubectl drain node01 --ignore-daemonsets --delete-emptydir-data

3、node01节点执行升级

[root@node01 ~]# kubeadm upgrade node

如果升级成功后,会出现以下字样

[upgrade] The configuration for this node was successfully updated!
[upgrade] Now you should go ahead and upgrade the kubelet package using your package manager.

4、node01节点升级kubelet和kubectl

[root@node01 ~]# yum install -y kubelet-1.27.6-0  kubectl-1.27.6-0

5、node01节点重启kubelet

systemctl daemon-reload
systemctl restart kubelet

6、node01节点恢复调度,上线

[root@master01 ~]# kubectl uncordon node01

升级node02节点

1、node02节点升级kubeadm

[root@node02 ~]# yum install kubeadm-1.27.6-0 -y

验证下载操作正常,并且 kubeadm 版本正确

[root@node02 ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.6", GitCommit:"741c8db18a52787d734cbe4795f0b4ad860906d6", GitTreeState:"clean", BuildDate:"2023-09-13T09:19:54Z", GoVersion:"go1.20.8", Compiler:"gc", Platform:"linux/amd64"}

2、将node02节点标记为不可调度

[root@master01 ~]# kubectl drain node02 --ignore-daemonsets --delete-emptydir-data

3、node02节点执行升级

[root@node02 ~]# kubeadm upgrade node

如果升级成功后,会出现以下字样

[upgrade] The configuration for this node was successfully updated!
[upgrade] Now you should go ahead and upgrade the kubelet package using your package manager.

4、node02节点升级kubelet和kubectl

[root@node02 ~]# yum install -y kubelet-1.27.6-0  kubectl-1.27.6-0

5、node02节点重启kubelet

systemctl daemon-reload
systemctl restart kubelet

6、node02节点恢复调度,上线

[root@master01 ~]# kubectl uncordon node02