升级注意事项:

1、升级时可以跨补丁版本升级,比如v1.22.x可以升级v1.22.y,其中补丁版本y>x+1;也可以v1.22.x升级v1.23.x;但是不能跨次要版本升级,比如v1.22.x升级1.26.x是无法升级的。
2、多个master 节点的kube-apiservice 版本要求。
**kubelet:**kubelet 版本不能比kube-apiserver 版本新,并且最多只可落后两个次要版本。如果HA 集群中的kube-apiserver 实例之间存在版本偏差,这会缩小
允许的kubelet 版本范围。
kube-controller-manager、kube-scheduler 和cloud-controller-manager:kube-
controller-manager、kube-scheduler 和cloud-controller-manager 不能比与它
们通信的kube-apiserver 实例新。它们应该与kube-apiserver 次要版本相匹配,但可能最多旧一个次要版本。
kubectl: kubectl 在kube-apiserver 的一个次要版本(较旧或较新)中支持。
kube-proxy: kube-proxy 和节点上的kubelet 必须是相同的次要版本。kube-
proxy 版本不能比kube-apiserver 版本新。kube-proxy 最多只能比kube-apiserver 落后两个次要版本。

Master管理节点主机升级操作流程:

在master查看你当前运行版本(master节点操作)

kubectl get node

kubernetes 集群搬迁 kubernetes集群升级_上传

查看kubeadm的版本,这里选择升级1.23.17版本(master节点操作)

yum list --showduplicates kubeadm --disableexcludes=kubernetes

kubernetes 集群搬迁 kubernetes集群升级_kubernetes 集群搬迁_02

下载安装kubeadm的v1.23.17版本(master节点操作)

yum -y install kubeadm-1.23.17-0.x86_64 --disableexcludes=kubernetes

kubernetes 集群搬迁 kubernetes集群升级_kubernetes_03

下载完kubeadm软件包后查看kubeadm版本

kubeadm version

kubernetes 集群搬迁 kubernetes集群升级_kubernetes_04

验证升级计划(master节点执行)

kubeadm upgrade plan
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VAsKTGBY-1685612517131)(http://www.zhanghaobk.com/upload/2023/05/image-1684205118525.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QfwhK8zD-1685612517131)(http://www.zhanghaobk.com/upload/2023/05/image-1684205160874.png)]

执行升级(master节点执行)

kubeadm upgrade apply v1.23.17

执行命令后会提示确认输入“y”即可

kubernetes 集群搬迁 kubernetes集群升级_kubernetes_05


等待下图的“SUCCESS”字样出现表示成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KJJYiuGt-1685612517131)(http://www.zhanghaobk.com/upload/2023/05/image-1684205235331.png)]

注意如果集群是多哥master节点模式需要将其他master节点设置成“维护模式”,本次实验只有一台master管理节点,所以这里不需要执行下面的命令

kubectl drain xxxxx --ignore-daemonsets #xxxx表示其他master管理节点主机名称,如果为多个master节点则需要执行此命令

升级kubelet和kubectl(master节点执行)

yum install -y kubelet-1.23.17-0.x86_64 kubectl-1.23.17-0.x86_64 --disableexcludes=kubernetes

重新启动kubelet(master节点执行)

systemctl daemon-reload && systemctl restart kubelet

解除其他管理节点master维护模式

这里为单节点master模式,所以这里不需要执行下面命令,如果为多个master节点则需要执行下面命令

kubectl uncordon xxxx #xxxx为其他管理节点master的主机名称

管理节点master升级完成,进行验证

kubectl get node

kubernetes 集群搬迁 kubernetes集群升级_kubernetes_06

如果是多管理节点master此时到这里已经升级完一台master主机,其他的master主机按照上面步骤重新依次执行即可

Node从节点主机升级操作流程:

升级kubeadm至v1.23.17版本(node节点执行)

yum install -y kubeadm-1.23.17-0.x86_64 --disableexcludes=kubernetes

从节点执行如下命令操作(node节点执行)

kubeadm upgrade node
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cCriBHVX-1685612517132)(http://www.zhanghaobk.com/upload/2023/05/image-1684205836121.png)]

将node节点设置为维护状态(master节点执行)

kubectl drain node1 --ignore-daemonsets --delete-emptydir-data

kubernetes 集群搬迁 kubernetes集群升级_kubernetes_07

升级kubelet和kubectl(node节点执行)

yum install -y kubelet-1.23.17-0.x86_64 kubectl-1.23.17-0.x86_64 --disableexcludes=kubernetes

重启kubelet服务(node节点执行)

systemctl daemon-reload && systemctl restart kubelet

取消节点的维护模式(master节点执行)

kubectl uncordon node1

kubernetes 集群搬迁 kubernetes集群升级_上传_08


7、验证此node节点是否升级完成(master节点执行)

kubectl get node

kubernetes 集群搬迁 kubernetes集群升级_kubernetes_09


此时这台node节点已经升级完成

这里是列举集群中多个node其中一个节点的升级方式,其他node节点按照上面步骤依次执行即可

讲解说明:

kubeadm upgrade apply 做了以下工作:

1、检查你的集群是否处于可升级状态:
2、API 服务器是可访问的
3、所有节点处于Ready 状态
4、控制面是健康的
5、强制执行版本偏差策略。
6、确保控制面的镜像是可用的或可拉取到服务器上。
7、如果组件配置要求版本升级,则生成替代配置与/或使用用户提供的覆盖版本配置。
8、升级控制面组件或回滚(如果其中任何一个组件无法启动)。
9、应用新的CoreDNS 和kube-proxy 清单,并强制创建所有必需的RBAC 规则。如果旧文件在180 天后过期,将创建API 服务器的新证书和密钥文件并备份旧文件。

kubeadm upgrade node 在其他控制平节点上执行以下操作:

1、从集群中获取kubeadm ClusterConfiguration。
2、(可选操作)备份kube-apiserver 证书。
3、升级控制平面组件的静态Pod 清单。
4、为本节点升级kubelet 配置
5、kubeadm upgrade node 在工作节点上完成以下工作:从集群取回kubeadm ClusterConfiguration。
7、为本节点升级kubelet 配置。