升级注意事项:
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
查看kubeadm的版本,这里选择升级1.23.17版本(master节点操作)
yum list --showduplicates kubeadm --disableexcludes=kubernetes
下载安装kubeadm的v1.23.17版本(master节点操作)
yum -y install kubeadm-1.23.17-0.x86_64 --disableexcludes=kubernetes
下载完kubeadm软件包后查看kubeadm版本
kubeadm version
验证升级计划(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”即可
等待下图的“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
如果是多管理节点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
升级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
7、验证此node节点是否升级完成(master节点执行)
kubectl get node
此时这台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 配置。