ubuntu

如何升级Ubuntu上的Kubernetes版本

小樊
37
2025-10-25 02:35:39
栏目: 智能运维

如何在Ubuntu上升级Kubernetes版本(基于kubeadm部署)

升级Kubernetes版本需遵循**“备份→检查兼容性→升级控制平面→升级工作节点→验证”**的流程,以下是详细步骤及注意事项:

一、升级前准备

1. 备份集群数据

升级前必须备份etcd数据(集群核心状态存储)和配置文件(避免数据丢失):

# 备份etcd数据(需替换为实际etcd端点、证书路径)
ETCDCTL_API=3 etcdctl snapshot save /opt/etcd_backup/snapshot.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

# 备份/etc/kubernetes目录(包含kube-apiserver、kube-controller-manager等配置)
sudo cp -r /etc/kubernetes /opt/kubernetes_backup/

2. 检查版本兼容性

3. 更新系统及软件包

sudo apt update && sudo apt upgrade -y

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

控制平面节点升级需逐个进行(优先升级主节点),步骤如下:

1. 升级kubeadm工具

kubeadm是升级的核心工具,需先升级到目标版本:

# 查找可用的kubeadm版本(以1.28为例)
apt-cache madison kubeadm | grep 1.28

# 安装指定版本的kubeadm(替换为实际版本号,如1.28.3-00)
sudo apt-mark unhold kubeadm && \
sudo apt-get install -y kubeadm=1.28.3-00 && \
sudo apt-mark hold kubeadm

# 验证kubeadm版本
kubeadm version

2. 检查升级计划

运行kubeadm upgrade plan检查集群是否可升级,并获取目标版本:

sudo kubeadm upgrade plan

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

3. 执行升级

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

sudo kubeadm upgrade apply v1.28.3

4. 升级kubelet和kubectl

# 升级kubelet和kubectl(替换为与kubeadm一致的版本号)
sudo apt-mark unhold kubelet kubectl && \
sudo apt-get install -y kubelet=1.28.3-00 kubectl=1.28.3-00 && \
sudo apt-mark hold kubelet kubectl

# 重启kubelet服务
sudo systemctl daemon-reload
sudo systemctl restart kubelet

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

工作节点升级需逐个进行(避免同时升级多个节点导致集群资源不足),步骤如下:

1. 腾空节点(Drain)

将节点标记为不可调度,并驱逐所有Pod(确保业务无损):

# 替换为实际节点名称(如work1)
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data

2. 升级kubeadm、kubelet和kubectl

# 升级kubeadm(可选,若需统一版本)
sudo apt-mark unhold kubeadm && \
sudo apt-get install -y kubeadm=1.28.3-00 && \
sudo apt-mark hold kubeadm

# 升级kubelet和kubectl
sudo apt-mark unhold kubelet kubectl && \
sudo apt-get install -y kubelet=1.28.3-00 kubectl=1.28.3-00 && \
sudo apt-mark hold kubelet kubectl

# 重启kubelet服务
sudo systemctl daemon-reload
sudo systemctl restart kubelet

3. 取消腾空(Uncordon)

升级完成后,将节点标记为可调度:

kubectl uncordon <node-name>

4. 验证节点状态

kubectl get nodes -o wide

确认节点状态为Ready,且VERSION列显示为目标版本。

四、升级后验证

  1. 检查集群状态

    kubectl get nodes  # 所有节点应为Ready状态
    kubectl get pods -A  # 所有Pod应为Running状态
    
  2. 测试业务功能: 部署一个简单应用(如Nginx),验证集群是否能正常调度和管理Pod:

    kubectl create deployment nginx --image=nginx
    kubectl expose deployment nginx --port=80 --type=NodePort
    kubectl get svc nginx
    

    访问NodePort对应的IP,确认Nginx能正常访问。

五、注意事项

通过以上步骤,即可完成Ubuntu上Kubernetes版本的升级。建议在测试环境验证流程后再应用于生产环境,确保业务稳定性。

0
看了该问题的人还看了