ubuntu

如何更新 Ubuntu Kubernetes 版本

小樊
43
2025-10-08 03:44:43
栏目: 智能运维

如何在Ubuntu上更新Kubernetes版本(基于kubeadm部署)

更新Kubernetes集群是保障集群安全性、稳定性及获取新功能的关键操作。以下是基于Ubuntu系统和kubeadm工具的详细升级流程,覆盖从准备到验证的全流程:

一、升级前准备

1. 备份关键数据

升级前必须备份etcd(集群状态存储)和配置文件,防止数据丢失:

2. 检查版本兼容性

3. 更新软件包列表

sudo apt-get update

4. 升级kubeadm工具

kubeadm是升级集群的核心工具,需先升级到目标版本(以v1.29.2为例):

sudo apt-get install -y kubeadm=1.29.2-00
sudo apt-mark hold kubeadm  # 锁定kubeadm版本,防止自动升级

5. 检查升级计划

运行kubeadm upgrade plan查看可升级的版本及需要更新的组件:

sudo kubeadm upgrade plan

输出会显示当前版本、可升级的目标版本及升级前的检查项(如etcd版本兼容性)。

二、升级控制平面节点(Master节点)

1. 执行升级命令

根据kubeadm upgrade plan的输出,执行升级到目标版本的命令(以v1.29.2为例):

sudo kubeadm upgrade apply v1.29.2 --etcd-upgrade=false

2. 排空Master节点

升级前将Master节点标记为不可调度,避免新Pod调度到该节点:

kubectl drain <master-node-name> --ignore-daemonsets --force

3. 重启kubelet服务

升级完成后重启kubelet以应用新版本:

sudo systemctl daemon-reload
sudo systemctl restart kubelet

4. 取消Master节点保护

升级完成后,允许新Pod调度到Master节点:

kubectl uncordon <master-node-name>

三、升级工作节点(Worker节点)

1. 逐个升级工作节点

为避免集群不可用,需逐个升级工作节点(以worker1为例):

2. 验证节点升级

在Master节点上检查节点状态,确保节点转为Ready

kubectl get nodes

节点状态变为Ready后,继续升级下一个工作节点。

3. 取消节点保护

节点升级完成后,取消排空状态:

kubectl uncordon worker1

四、升级后验证

  1. 检查集群状态
    kubectl get nodes  # 所有节点应为Ready状态
    kubectl get pods --all-namespaces  # 所有Pod应为Running状态
    
  2. 验证新功能:根据目标版本的新特性(如API变更、性能优化),测试集群功能是否正常。
  3. 清理旧镜像:删除旧版本的Kubernetes镜像,释放磁盘空间:
    docker system prune -a --filter "until=24h"
    

注意事项

0
看了该问题的人还看了