首页主机资讯如何在Ubuntu上升级Kubernetes集群

如何在Ubuntu上升级Kubernetes集群

时间2025-10-21 18:12:04发布访客分类主机资讯浏览217
导读:在Ubuntu上升级Kubernetes集群(以kubeadm部署为例) 升级Kubernetes集群需遵循“前置检查→控制平面升级→工作节点升级→验证”的流程,确保业务连续性与版本兼容性。以下是详细步骤: 一、升级前准备 1. 备份集群数...

在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. 检查版本兼容性

  • 确认当前版本:通过kubectl version --short获取集群版本(如v1.24.6)。
  • 确认升级路径:Kubernetes不支持跨多个次要版本跳跃升级(如v1.24→v1.26),必须按相邻次要版本递进(如v1.24→v1.25→v1.26)。
  • 检查组件兼容性:参考Kubernetes官方升级文档,确认容器运行时(如containerd≥1.6,对应K8s 1.25+)、网络插件(如Calico≥3.24,对应K8s 1.25+)、Ingress控制器(如Nginx Ingress≥1.5,对应K8s 1.25+)与目标版本兼容。

3. 检查集群健康状态

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

  • 控制平面组件kubectl get pods -n kube-system -l component=kube-apiserver(需Running状态)。
  • 节点状态kubectl get nodes(所有节点需为Ready)。
  • Pod状态kubectl get pods --all-namespaces --field-selector=status.phase!=Running(无CrashLoopBackOffError状态的Pod)。

二、升级控制平面节点(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
  • 输入yes确认升级。
  • 命令会自动升级控制平面组件(API Server、Controller Manager、Scheduler)及etcd(若使用kubeadm管理的etcd)。

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),确认业务正常运行。

注意事项

  • 版本递进:必须遵循相邻次要版本升级,禁止跳跃升级。
  • 业务低峰期操作:升级过程中API Server会短暂中断,建议在业务低峰期进行。
  • 高危操作规避:升级前停止对集群的修改(如修改节点配置、调整Ingress规则)。
  • 回滚准备:若升级失败,可通过kubeadm upgrade revert回滚到上一个版本,或使用etcd快照恢复数据。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在Ubuntu上升级Kubernetes集群
本文地址: https://pptw.com/jishu/731381.html
Debian getconf如何管理用户权限 Debian getconf如何查看内核版本

游客 回复需填写必要信息