首页主机资讯Ubuntu K8s如何进行版本升级

Ubuntu K8s如何进行版本升级

时间2025-10-23 12:18:05发布访客分类主机资讯浏览1270
导读:Ubuntu系统下Kubernetes版本升级指南(基于kubeadm部署) 一、升级前准备:规避风险的关键步骤 明确升级路径 Kubernetes不支持跨多个次要版本跳跃升级(如从1.22直接升级到1.25),必须遵循“相邻次要版本递进...

Ubuntu系统下Kubernetes版本升级指南(基于kubeadm部署)

一、升级前准备:规避风险的关键步骤

  1. 明确升级路径
    Kubernetes不支持跨多个次要版本跳跃升级(如从1.22直接升级到1.25),必须遵循“相邻次要版本递进”规则(如1.22→1.23→1.24→1.25)。可通过kubectl version查看当前集群版本,在官方升级文档中确认目标版本的兼容性。
  2. 检查集群健康状态
    升级前必须确保集群处于稳定状态,避免因原有问题导致升级失败:
    • 控制平面组件:kubectl get pods -n kube-system -l component=kube-apiserver(API Server)、-l component=etcd(Etcd)、-l component=kube-controller-manager(Controller Manager)、-l component=kube-scheduler(Scheduler),确认所有Pod状态为Running
    • 节点状态:kubectl get nodes,确认所有节点状态为Ready
    • 工作负载状态:kubectl get pods --all-namespaces --field-selector status.phase!=Running,确认无CrashLoopBackOffError等异常状态的Pod。
  3. 备份关键数据
    • 备份etcd数据(集群核心数据):sudo kubeadm etcd snapshot create --config /etc/kubernetes/admin.conf
    • 备份Kubernetes配置文件:sudo cp -r /etc/kubernetes /etc/kubernetes.bak
  4. 准备工具与环境
    • 确保kubeadmkubeletkubectl版本与当前集群版本一致(可通过apt-mark hold kubeadm kubelet kubectl锁定版本,避免自动升级)。
    • 配置Ubuntu软件源(以Kubernetes 1.29为例):创建/etc/apt/sources.list.d/kubernetes.list文件,内容为deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/deb/ /,并导入GPG密钥。

二、核心升级步骤:分阶段完成集群升级

1. 升级控制平面节点(Master节点)

控制平面是集群核心,需优先升级,且每次仅升级一个控制平面节点(若有高可用集群)。

  • 升级kubeadm工具
    解锁kubeadm包(若之前锁定),安装目标版本,再锁定:

    sudo apt-mark unhold kubeadm
    sudo apt update
    sudo apt install -y kubeadm=1.29.2-1.1  # 替换为目标版本(如1.29.2)
    sudo apt-mark hold kubeadm
    

    验证kubeadm版本:kubeadm version

  • 检查升级计划
    运行kubeadm upgrade plan,查看集群是否可升级及推荐目标版本(如v1.29.2),并确认配置文件是否需要更新。

  • 应用升级
    执行升级命令(以目标版本v1.29.2为例):

    sudo kubeadm upgrade apply v1.29.2 --etcd-upgrade=false  # 若etcd为外部部署,添加--etcd-upgrade=false
    

    根据提示确认升级(输入yes),等待命令执行完成。

  • 升级控制平面组件配置
    升级完成后,更新控制平面组件(kube-apiserver、kube-controller-manager、kube-scheduler)的配置:

    sudo kubeadm upgrade node config --kubelet-version $(kubelet --version | cut -d ' ' -f 2)
    sudo systemctl restart kubelet
    

2. 升级工作节点(Worker节点)

工作节点升级需逐个进行(或分批,确保剩余节点能承载业务流量),避免全量升级导致业务中断。

  • 腾空节点
    将节点标记为不可调度并驱逐所有Pod(避免升级过程中Pod被调度到该节点):

    kubectl drain <
        node-name>
         --ignore-daemonsets --force  # 替换<
        node-name>
        为目标节点名称
    

    升级完成后,解除节点保护(允许Pod重新调度):

    kubectl uncordon <
        node-name>
        
    
  • 升级kubelet和kubectl
    在工作节点上执行与Master节点相同的步骤,升级kubeletkubectl

    sudo apt-mark unhold kubelet kubectl
    sudo apt update
    sudo apt install -y kubelet=1.29.2-1.1 kubectl=1.29.2-1.1  # 替换为目标版本
    sudo apt-mark hold kubelet kubectl
    sudo systemctl daemon-reload
    sudo systemctl restart kubelet
    
  • 升级节点本身
    在Master节点上执行kubeadm upgrade node,将工作节点升级到目标版本:

    sudo kubeadm upgrade node
    

    升级完成后,kubectl get nodes会显示节点状态为Ready,且版本号更新为目标版本。

三、升级后验证:确保集群正常运行

  1. 检查集群状态
    运行kubectl get nodes,确认所有节点状态为Ready,且版本号均更新为目标版本。
  2. 检查工作负载状态
    运行kubectl get pods --all-namespaces,确认所有Pod状态为Running,无异常状态。
  3. 验证新特性
    根据目标版本的新特性(如K8s 1.25支持PodSecurity标准),进行简单测试(如创建符合PodSecurity约束的Pod),确保新特性正常工作。

四、注意事项:避免升级失败的常见陷阱

  • 版本兼容性:确保kubeadmkubeletkubectl版本一致,且与集群版本匹配(如kubectl版本需与集群版本相差不超过1个次要版本)。
  • 网络插件兼容性:升级前检查网络插件(如Calico、Flannel)是否支持目标K8s版本(如Calico 3.24支持K8s 1.25),必要时升级插件。
  • 业务低峰期操作:避免在业务高峰期升级,减少对业务的影响。
  • 回退预案:若升级失败,可通过kubeadm upgrade revert回退到上一个版本,并恢复etcd备份数据。

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


若转载请注明出处: Ubuntu K8s如何进行版本升级
本文地址: https://pptw.com/jishu/733299.html
ubuntu上js如何优化性能 Ubuntu K8s如何配置网络策略

游客 回复需填写必要信息