首页主机资讯Linux下如何升级K8S版本

Linux下如何升级K8S版本

时间2025-10-23 17:39:04发布访客分类主机资讯浏览309
导读:Linux下升级K8S版本的分步指南(以kubeadm部署为例) 一、升级前准备:规避风险的关键 明确升级路径 K8s遵循“相邻次要版本递进”原则(如1.23→1.24→1.25),禁止跨多个次要版本跳跃升级(如1.22→1.25)。需通...

Linux下升级K8S版本的分步指南(以kubeadm部署为例)

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

  1. 明确升级路径
    K8s遵循“相邻次要版本递进”原则(如1.23→1.24→1.25),禁止跨多个次要版本跳跃升级(如1.22→1.25)。需通过kubectl version查看当前集群版本,在官方升级文档中确认目标版本的兼容性。
  2. 检查集群健康状态
    升级前必须确保集群无异常,关键检查项:
    • 控制平面组件状态: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)。
  3. 备份关键数据
    • 备份etcd数据(etcd是集群状态存储核心):
      ETCDCTL_API=3 etcdctl snapshot save /tmp/etcd-snapshot-$(date +%F).db
      
    • 备份配置文件:cp -r /etc/kubernetes /etc/kubernetes.backup
  4. 确认组件兼容性
    • 网络插件(如Calico、Flannel):需升级到支持目标K8s版本的版本(如Calico 3.24支持K8s 1.25);
    • 容器运行时:K8s 1.25+推荐使用containerd(Docker已弃用),需升级到兼容版本(如containerd 1.6+);
    • 工具链:kubectl版本需与集群版本相差不超过1个次要版本(如集群1.24,kubectl需为1.23-1.25)。

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

控制平面是集群核心,需优先升级,步骤如下:

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

    • CentOS/RHEL
      sudo yum install -y kubeadm-<
          目标版本>
           --disableexcludes=kubernetes
      
    • Ubuntu/Debian
      sudo apt update &
          &
           sudo apt install -y kubeadm=<
          目标版本>
           -V
      

    安装后通过kubeadm version验证版本是否正确。

  2. 检查升级计划
    运行kubeadm upgrade plan查看集群可升级到的版本及需要升级的组件(如kube-apiserver、kube-controller-manager等),确认无误后继续。

  3. 应用升级
    执行kubeadm upgrade apply < 目标版本> (如kubeadm upgrade apply v1.25.0),该命令会自动升级控制平面组件(kube-apiserver、kube-controller-manager、kube-scheduler)及kubelet配置文件。升级完成后,重启控制平面组件:

    sudo systemctl daemon-reload
    sudo systemctl restart kube-apiserver kube-controller-manager kube-scheduler
    
  4. 升级kubelet和kubectl

    • 升级kubelet:sudo yum install -y kubelet-< 目标版本> --disableexcludes=kubernetes(CentOS);
    • 升级kubectl:sudo apt install -y kubectl=< 目标版本> -V(Ubuntu);
    • 重启kubelet:sudo systemctl daemon-reload & & sudo systemctl restart kubelet

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

工作节点负责运行Pod,需在控制平面升级完成后逐个升级,确保集群始终有可用节点承载业务:

  1. 标记节点为不可调度
    避免新Pod调度到待升级节点:

    kubectl cordon <
        节点名称>
        
    
  2. 驱逐节点上的Pod
    将节点上的Pod安全驱逐到其他节点(--ignore-daemonsets忽略DaemonSet管理的Pod,--force强制驱逐):

    kubectl drain <
        节点名称>
         --ignore-daemonsets --force
    
  3. 升级kubelet和kubectl
    步骤同控制平面节点的kubelet/kubectl升级(见上文)。

  4. 重启kubelet

    sudo systemctl daemon-reload &
        &
         sudo systemctl restart kubelet
    
  5. 标记节点为可调度
    升级完成后,允许新Pod调度到该节点:

    kubectl uncordon <
        节点名称>
        
    
  6. 重复操作
    依次升级所有工作节点,确保集群高可用。

四、升级后验证:确保集群正常

  1. 检查节点状态
    确认所有节点已升级到目标版本且状态正常:

    kubectl get nodes -o wide
    

    输出中VERSION列应显示为目标版本(如v1.25.0),STATUSReady

  2. 检查Pod状态
    确认所有Pod正常运行:

    kubectl get pods --all-namespaces
    

    CrashLoopBackOffErrorPending状态的Pod(短暂ContainerCreating属正常)。

  3. 验证业务功能
    检查核心业务应用(如数据库、Web服务)的可用性(如访问接口、查询数据),确保升级未影响业务逻辑。

五、常见问题与注意事项

  • 版本跳过:禁止跨多个次要版本升级,否则可能导致组件不兼容(如1.22→1.25可能引发kube-apiserver启动失败);
  • etcd备份:etcd数据丢失将导致集群无法恢复,升级前必须备份(可通过ETCDCTL_API=3 etcdctl snapshot restore恢复);
  • 网络插件:升级前需确认网络插件支持目标版本(如Calico 3.23不支持K8s 1.25,需升级到3.24+);
  • 测试环境:生产环境升级前,务必在测试环境验证步骤(如模拟节点驱逐、组件升级),避免生产故障。

通过以上步骤,可平稳完成Linux环境下K8S集群的版本升级,兼顾稳定性与新特性。升级过程中需严格遵循“备份→检查→升级→验证”的流程,确保业务连续性。

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


若转载请注明出处: Linux下如何升级K8S版本
本文地址: https://pptw.com/jishu/733620.html
K8S安装过程中常见问题有哪些 ubuntu僵尸进程是啥东西

游客 回复需填写必要信息