Cluster Upgrade

核心目标:
- 将控制平面节点的
kubeadm、Kubernetes 集群本身和kubelet从v1.31.1升级到v1.32.2。 - 在升级前后,分别截取屏幕截图,证明
kubeadm、集群和kubelet的版本已经成功升级。
步骤详解:
1. 切换到正确的 Kubernetes 集群上下文 (至关重要!)
kubectl config use-context kubernetes-admin@kubernetes
务必确认你已经切换到了正确的集群! 这是最容易出错的地方,考试时一定要仔细检查。
2. 收集升级前的版本信息 (截屏!)
-
kubeadm:
kubeadm version运行这个命令,并将输出结果截屏。这就是
kubeadm升级前的版本信息。 -
Kubernetes 集群 (控制平面):
kubectl version运行这个命令,找到
Server Version的值,并将整个输出结果截屏。这就是 Kubernetes 集群升级前的版本信息。 -
kubelet:
kubectl get nodes -o wide运行这个命令,找到
KUBELET VERSION列,并将包含控制平面节点的那一行截屏。这就是kubelet升级前的版本信息。 另一种方法是 SSH 登录到控制平面节点,然后运行kubelet --version并截屏。
3. 隔离控制平面节点 (Drain)
kubectl get nodes # 获取节点名称
kubectl drain <节点名称> --ignore-daemonsets --delete-emptydir-data --force
将 <节点名称> 替换成你实际的控制平面节点的名字。
4. 升级 kubeadm
apt update && apt-cache show kubeadm | grep Version # 查找目标版本
apt-get update && apt-get install -y kubeadm=1.27.2-00
apt-mark hold kubeadm
将 1.27.2-00 替换成你实际要安装的版本。
5. 升级 Kubernetes 集群 (控制平面)
kubeadm upgrade plan
kubeadm upgrade apply v1.27.2
6. 升级 kubelet 和 kubectl
apt-get update && apt-get install -y kubelet=1.27.2-00 kubectl=1.27.2-00
apt-mark hold kubelet kubectl
systemctl daemon-reload && systemctl restart kubelet
7. 取消隔离控制平面节点 (Uncordon)
kubectl uncordon <节点名称>
将 <节点名称> 替换成你实际的控制平面节点的名字。
8. 收集升级后的版本信息
-
kubeadm:
kubeadm version运行这个命令,并将输出结果截屏。这就是
kubeadm升级后的版本信息。 -
Kubernetes 集群 (控制平面):
kubectl version运行这个命令,找到
Server Version的值,并将整个输出结果截屏。这就是 Kubernetes 集群升级后的版本信息。 -
kubelet:
kubectl get nodes -o wide -
简而言之
就是升级master节点的组件版本。核心考察的还是升级k8s的核心组件,这只是升级master节点,node节点升级也是一样,先给要升级的节点驱逐pod然后在对应的节点进行升级操作,确保集群的高可用性。
控制平面节点(controlplane)已经成功升级到 v1.32.2。
kubeadm version显示kubeadm版本为v1.32.2kubectl version显示Server Version为v1.32.2kubectl get nodes -o wide显示controlplane节点的VERSION为v1.32.2
关于 Worker 节点的升级:
需要逐个升级 Worker 节点(例如 node01)。 Worker 节点的升级过程与控制平面节点类似,但有一些关键区别:
Worker 节点升级步骤:
-
选择一个 Worker 节点: 例如
node01。 -
Drain Worker 节点:
kubectl drain node01 --ignore-daemonsets --delete-emptydir-data --force -
SSH 登录到 Worker 节点: 使用 SSH 连接到
node01。 -
升级 kubelet 和 kubectl:
sudo apt-get update && sudo apt-get install -y kubelet=1.32.2-00 kubectl=1.32.2-00 sudo apt-mark hold kubelet kubectl sudo systemctl daemon-reload && sudo systemctl restart kubelet- 注意: 在 Worker 节点上,通常需要使用
sudo来执行apt-get命令。
- 注意: 在 Worker 节点上,通常需要使用
-
Uncordon Worker 节点:
kubectl uncordon node01注意:
kubectl命令需要在控制平面节点上执行,所以你需要退出 Worker 节点的 SSH 连接,回到控制平面节点执行这个命令。 -
验证升级:
kubectl get nodes -o wide确认
node01的VERSION已经更新为v1.32.2。
重要提示:
- 逐个升级: 强烈建议逐个升级 Worker 节点,而不是同时升级所有节点。 这样可以降低升级过程中出现问题的风险。
- 监控: 在升级过程中,密切监控集群的健康状况,确保应用程序正常运行。
- 版本匹配: 确保 Worker 节点的
kubelet版本与控制平面的 Kubernetes 版本兼容。 通常建议 Worker 节点的kubelet版本与控制平面版本相同。 - SSH 访问: 确保你可以通过 SSH 访问所有的 Worker 节点。
截图如下:
controlplane:~$ apt-mark hold kubelet kubectl #旨在阻止kubelet和kubectl自动更新。
kubelet set on hold.
kubectl set on hold.

浙公网安备 33010602011771号