一. 升级工作的基本流程如下:
注: k8s kubeadm 集群只支持跨一个版本升级 如 1.20----->1.21----->1.22 依次升级,我们这里使用kubeadm upgrade 进行升级
- 升级主控制平面节点
- 升级其他控制平面节点
- 升级工作节点 准备开始
务必备份所有重要组件,例如存储在数据库中应用层面的状态。 kubeadm upgrade 不会影响你的工作负载,只会涉及 Kubernetes 内部的组件,但备份终究是好的。
二. 升级准备选择版本
- 列出补丁版本,我这里是1.21.14所以最多只能升级到1.22.12
yum list --showduplicates kubeadm --disableexcludes=kubernetes
kubeadm list.png
三开始升级
- 安装选择版本的kubeadm-1.22.12-0
yum install -y kubeadm-1.22.12-0 --disableexcludes=kubernetes
- 验证下载操作正常,并且 kubeadm 版本正确:
kubeadm version
kubeadm version.png
- 验证升级计划:
kubeadm upgrade plan
更新主节点.png
- 拉取好所有的镜像到本地或者是你配置的私有仓库,我找的对应版本如下
docker pull k8simage/kube-apiserver:v1.22.12
docker pull k8simage/kube-scheduler:v1.22.12
docker pull k8simage/kube-controller-manager:v1.22.12
docker pull k8simage/kube-proxy:v1.22.12
docker pull coredns/coredns:1.8.4
docker pull bitnami/etcd:3.5
- 利用kubeadm upgrade apply升级版本
kubeadm upgrade apply v1.22.12
apply-master.png
- 等待更新成功
updated.png
四. 更新其他控制节点
- 安装选择版本的kubeadm-1.22.12-0
yum install -y kubeadm-1.22.12-0 --disableexcludes=kubernetes
- 通过将节点标记为不可调度并腾空节点为节点作升级准备:
kubectl drain k8s-master* --ignore-daemonsets
- 升级控制节点
sudo kubeadm upgrade node
updated.png
- 更新kubelet kubectl。
yum install -y kubelet-1.22.12-0 kubectl-1.22.12-0 --disableexcludes=kubernetes
- 重启服务
sudo systemctl daemon-reload
sudo systemctl restart kubelet
五. 更新node 节点
- 安装选择版本的kubeadm-1.22.12-0
yum install -y kubeadm-1.22.12-0 --disableexcludes=kubernetes
- 通过将节点标记为不可调度并腾空节点为节点作升级准备:
kubectl drain k8s-master* --ignore-daemonsets
- 升级node
sudo kubeadm upgrade node
updated.png
- 更新kubelet kubectl。
yum install -y kubelet-1.22.12-0 kubectl-1.22.12-0 --disableexcludes=kubernetes
- 重启服务
sudo systemctl daemon-reload
sudo systemctl restart kubelet
六. 确认更新结果
nodes.png
参考文档 :https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/