首页主机资讯centos k8s如何更新到最新版本

centos k8s如何更新到最新版本

时间2025-10-15 23:10:03发布访客分类主机资讯浏览913
导读:CentOS环境下Kubernetes集群升级至最新版本指南 一、升级前准备:规避风险的关键步骤 备份核心数据 升级前必须备份集群关键数据,确保故障时可快速恢复: 备份etcd数据库(控制平面核心数据):etcdctl snapsho...

CentOS环境下Kubernetes集群升级至最新版本指南

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

  1. 备份核心数据
    升级前必须备份集群关键数据,确保故障时可快速恢复:

    • 备份etcd数据库(控制平面核心数据):etcdctl snapshot save /var/lib/etcd/backup/snapshot.db
    • 备份kubeconfig配置文件:cp /root/.kube/config /root/.kube/config.backup
    • 备份/etc/kubernetes目录(包含集群配置):tar -czvf k8s-config-backup.tar.gz /etc/kubernetes
  2. 检查当前集群状态
    确保集群处于健康状态,避免带病升级:

    • 检查控制平面组件Pod状态: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. 确认升级路径
    Kubernetes不支持跨多个次要版本跳跃升级(如1.23→1.25),必须遵循“相邻次要版本递进”规则(如1.23→1.24→1.25)。通过kubectl version --short查看当前版本,在官方升级文档中确认目标版本的兼容性。

  4. 检查组件兼容性
    确保周边组件与目标K8s版本兼容:

    • 容器运行时:K8s 1.25+要求containerd 1.6+(Docker已弃用);
    • 网络插件:Calico 3.24+支持K8s 1.25,Flannel 0.20.0+支持K8s 1.25;
    • 工具链:kubectl版本需与集群版本相差不超过1个次要版本(如1.24集群需使用1.23-1.25版本的kubectl)。

二、核心升级步骤:以kubeadm部署的集群为例

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

(1)升级kubeadm工具
在Master节点上,使用yum安装最新版本的kubeadm(需提前配置kubernetes官方repo):

sudo yum update -y kubeadm --disableexcludes=kubernetes

验证kubeadm版本:kubeadm version(需显示为目标版本,如1.29.0)。

(2)检查升级计划
运行kubeadm upgrade plan命令,查看集群可升级到的版本及需要升级的组件:

sudo kubeadm upgrade plan

输出会提示当前版本、可升级的目标版本(如Recommended version: v1.29.0)及需要升级的控制平面组件(kube-apiserver、kube-controller-manager等)。

(3)执行控制平面升级
使用kubeadm upgrade apply命令升级控制平面组件:

sudo kubeadm upgrade apply v<
    target-version>
    

例如升级到1.29.0:sudo kubeadm upgrade apply v1.29.0。命令会自动下载并安装新版本的kube-apiserver、kube-controller-manager、kube-scheduler等组件。

(4)升级kubelet和kubectl
在Master节点上升级kubelet和kubectl:

sudo yum install -y kubelet-<
    target-version>
     kubectl-<
    target-version>
     --disableexcludes=kubernetes
sudo systemctl daemon-reload
sudo systemctl restart kubelet

验证版本:kubelet --versionkubectl version --short(需显示为目标版本)。

(5)解除Master节点保护
升级完成后,将Master节点标记为可调度,恢复其承载Pod的能力:

kubectl uncordon <
    master-node-name>
    

例如:kubectl uncordon k8s-master

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

(1)逐个升级Worker节点
为避免集群中断,每次仅升级1个Worker节点,重复以下步骤直至所有节点升级完成。

(2)腾空节点
将节点标记为不可调度,并驱逐所有Pod(Pod会被自动调度到其他节点):

kubectl drain <
    worker-node-name>
     --ignore-daemonsets --delete-emptydir-data

例如:kubectl drain k8s-node1

(3)升级kubeadm
在Worker节点上安装与Master节点相同版本的kubeadm:

sudo yum install -y kubeadm-<
    target-version>
     --disableexcludes=kubernetes

验证kubeadm版本:kubeadm version

(4)升级kubelet和kubectl
同Master节点步骤,升级kubelet和kubectl并重启服务:

sudo yum install -y kubelet-<
    target-version>
     kubectl-<
    target-version>
     --disableexcludes=kubernetes
sudo systemctl daemon-reload
sudo systemctl restart kubelet

验证版本:kubelet --versionkubectl version --short

(5)加入集群
使用kubeadm upgrade node命令将节点升级到目标版本,并重新加入集群:

sudo kubeadm upgrade node
sudo systemctl restart kubelet

升级完成后,节点会自动同步新版本的组件。

(6)恢复节点调度
将节点标记为可调度:

kubectl uncordon <
    worker-node-name>
    

例如:kubectl uncordon k8s-node1

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

  1. 检查集群状态
    确认所有节点状态为Readykubectl get nodes -o wide
    确认所有Pod状态为Runningkubectl get pods --all-namespaces --field-selector status.phase=Running

  2. 验证组件版本
    检查控制平面组件版本:kubectl version --short(需显示为目标版本);
    检查kubelet版本:ssh < node-name> "kubelet --version"(所有节点需一致)。

  3. 检查业务应用
    确认业务Pod正常运行:kubectl get pods -n < namespace>
    检查应用日志:kubectl logs < pod-name> -n < namespace>
    验证应用功能(如访问Ingress、数据库连接等)。

四、注意事项:保障升级成功率

  • 分批升级:大型集群可采用“控制平面→部分工作节点→剩余工作节点”的分批策略,减少业务影响;
  • 监控集群:升级过程中使用Prometheus、Grafana等工具监控集群状态(如CPU、内存、Pod调度情况);
  • 回退预案:若升级失败,可通过kubeadm upgrade revert命令回退到上一版本,并恢复etcd备份数据;
  • 测试环境验证:生产环境升级前,务必在测试环境模拟升级流程,排查潜在问题。

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


若转载请注明出处: centos k8s如何更新到最新版本
本文地址: https://pptw.com/jishu/727512.html
centos k8s安装失败怎么排查 centos crontab如何实现任务自动恢复

游客 回复需填写必要信息