一、升级前的准备工作
-
备份集群配置和数据
-
备份
/etc/kubernetes/
目录,其中包含Kubernetes集群的配置文件。 -
备份
/var/lib/etcd/
目录,其中存储了etcd数据库的数据。 -
使用
etcdctl
工具备份etcd数据:bash复制
ETCDCTL_API=3 etcdctl snapshot save /data/etcd/etcd_bak.db \ --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key
如果没有
etcdctl
工具,可通过yum install -y etcd
安装。
-
-
检查集群状态
- 确保集群中所有节点的状态正常,所有Pod都在运行状态。
- 检查集群中是否有未完成的作业或任务,避免升级过程中出现意外。
二、升级控制平面节点(master节点)
-
升级kubeadm
-
下载新版本的kubeadm二进制文件,并替换旧版本文件。例如,下载1.29.10版本:
bash复制
wget https://dl.k8s.io/release/v1.29.10/bin/linux/amd64/kubeadm chmod +x kubeadm sudo mv kubeadm /usr/local/bin/
-
-
验证kubeadm版本
- 执行
kubeadm version
命令,确认版本已升级到目标版本。
- 执行
-
检查升级计划
- 执行
kubeadm upgrade plan
命令,检查集群是否可以升级,并获取目标版本信息。
- 执行
-
执行控制平面升级
- 执行
kubeadm upgrade apply v1.29.10
命令,开始升级控制平面组件。 - 该命令会自动下载并安装新版本的控制平面组件,包括kube-apiserver、kube-controller-manager、kube-scheduler等。
- 执行
-
腾空master节点
-
将master节点标记为不可调度,并驱逐所有负载:
bash复制
kubectl drain k8s-master --ignore-daemonsets
-
-
升级kubelet和kubectl
-
下载新版本的kubelet和kubectl二进制文件,并替换旧版本文件:
bash复制
wget https://dl.k8s.io/release/v1.29.10/bin/linux/amd64/kubelet
-