ubuntu

如何在Ubuntu上升级Kubernetes集群

小樊
45
2025-10-20 23:55:16
栏目: 智能运维

在Ubuntu上升级Kubernetes集群(以kubeadm部署为例)

升级Kubernetes集群需遵循“前置检查→控制平面升级→工作节点升级→验证”的流程,确保业务连续性与版本兼容性。以下是详细步骤:

一、升级前准备

1. 备份集群数据

升级前必须备份etcd数据(集群状态核心存储),防止数据丢失。使用etcdctl命令创建快照:

ETCDCTL_API=3 etcdctl snapshot save /opt/kubernetes/backup/etcd_snapshot_$(date +%F).db \
  --endpoints=https://127.0.0.1:2379 \
  --cert=/etc/kubernetes/pki/etcd/server.crt \
  --key=/etc/kubernetes/pki/etcd/server.key \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt

确认快照文件生成(ls /opt/kubernetes/backup/),并存放在安全位置。

2. 检查版本兼容性

3. 检查集群健康状态

确保集群无故障,避免升级失败:

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

控制平面是集群核心,需优先升级。假设当前版本为v1.24.6,目标版本为v1.25.3

1. 升级kubeadm工具

kubeadm是升级控制平面的关键工具,需先升级到目标版本:

sudo apt update
sudo apt-mark unhold kubeadm  # 解除版本锁定(若之前锁定)
sudo apt install -y kubeadm=1.25.3-00  # 安装目标版本
sudo apt-mark hold kubeadm  # 锁定版本,防止误升级

2. 检查升级计划

通过kubeadm upgrade plan查看可升级版本及所需操作:

sudo kubeadm upgrade plan

输出会显示当前版本、可升级的目标版本(如v1.25.3)及需要升级的组件(如kube-apiserverkube-controller-manager)。

3. 执行升级

根据kubeadm upgrade plan的输出,执行升级命令(替换为目标版本):

sudo kubeadm upgrade apply v1.25.3

4. 升级kubelet配置

升级控制平面后,需更新kubelet配置以适配新版本:

sudo kubeadm upgrade node config --kubelet-version $(kubelet --version | cut -d ' ' -f 2)
sudo systemctl restart kubelet  # 重启kubelet使配置生效

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

工作节点负责运行Pod,需在控制平面升级完成后逐个升级:

1. 升级kubeadm

在工作节点上升级kubeadm到目标版本(与控制平面一致):

sudo apt update
sudo apt-mark unhold kubeadm
sudo apt install -y kubeadm=1.25.3-00
sudo apt-mark hold kubeadm

2. 升级节点

使用kubeadm upgrade node命令将节点升级到目标版本:

sudo kubeadm upgrade node

3. 升级kubelet

升级节点上的kubelet到目标版本:

sudo apt install -y kubelet=1.25.3-00
sudo systemctl daemon-reload
sudo systemctl restart kubelet

4. 移除升级污点(可选)

旧版本集群升级时,节点会自动添加node.kubernetes.io/upgrade:NoSchedule污点,阻止Pod调度。升级完成后可移除:

kubectl taint nodes <node-name> node.kubernetes.io/upgrade:NoSchedule-

<node-name>为节点名称,可通过kubectl get nodes获取)

四、升级后验证

升级完成后,需验证集群状态是否正常:

1. 检查节点状态

kubectl get nodes

所有节点应显示为Ready状态。

2. 检查Pod状态

kubectl get pods --all-namespaces

所有Pod应处于RunningCompleted状态(无ErrorCrashLoopBackOff)。

3. 验证应用功能

访问集群内的应用(如通过Ingress或NodePort),确认业务正常运行。

注意事项

0
看了该问题的人还看了