温馨提示×

如何更新centos上的k8s版本

小樊
45
2025-11-03 21:56:16
栏目: 智能运维

如何在CentOS上更新Kubernetes(k8s)版本
在CentOS上更新Kubernetes版本需遵循备份先行、分步升级、严格验证的原则,以下是详细操作流程:

1. 升级前准备工作

1.1 备份关键数据

升级前务必备份集群配置与数据,避免操作失误导致数据丢失:

  • 备份etcd数据(etcd是Kubernetes的核心存储组件):
    etcdctl snapshot save /var/lib/etcd/backup/snapshot.db
    
  • 备份kubeconfig文件(用于访问集群的凭证):
    cp /root/.kube/config /root/.kube/config.backup
    

1.2 检查当前集群状态

确认集群节点与Pod运行正常,无未处理的异常:

kubectl get nodes  # 查看节点状态(应为Ready)
kubectl get pods -A  # 查看所有命名空间的Pod状态(应为Running)

1.3 检查版本兼容性

  • 查看当前Kubernetes版本:
    kubectl version --short
    
  • 查看可用的kubeadm版本(kubeadm是升级核心工具):
    yum list --showduplicates kubeadm --disableexcludes=kubernetes
    
  • 参考Kubernetes官方文档确认版本偏差规则:Kubernetes不支持跨次版本升级(如1.23→1.25),必须逐次升级(如1.23→1.24→1.25)。

2. 升级Master节点

2.1 升级kubeadm工具

在Master节点上,使用yum更新kubeadm到目标版本:

sudo yum update -y kubeadm --disableexcludes=kubernetes

2.2 执行升级计划

通过kubeadm检查集群是否满足升级条件,并获取升级脚本:

sudo kubeadm upgrade plan v<new-version>  # 替换<new-version>为目标版本(如1.24.0)

该命令会输出升级前的检查项(如容器运行时版本、etcd版本)及升级步骤,确认无误后继续。

2.3 应用升级

执行升级命令,更新Master节点的控制平面组件(kube-apiserver、kube-controller-manager、kube-scheduler):

sudo kubeadm upgrade apply v<new-version>

升级过程中会提示确认操作,输入yes即可。升级完成后,kubeadm会自动更新Master节点的kubelet配置文件。

2.4 升级kubelet与kubectl

更新Master节点上的kubelet和kubectl工具:

sudo yum install -y kubelet-<new-version> kubectl-<new-version> --disableexcludes=kubernetes
sudo systemctl daemon-reload  # 重新加载systemd配置
sudo systemctl restart kubelet  # 重启kubelet服务

3. 升级Worker节点

3.1 升级kubelet与kubectl

在每个Worker节点上,执行与Master节点相同的命令升级kubelet和kubectl:

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

3.2 升级节点组件

在Master节点上,使用kubeadm将Worker节点升级到新版本:

sudo kubeadm upgrade node

该命令会自动同步Worker节点的控制平面组件版本。升级完成后,Worker节点会自动重启kubelet服务。

3.3 解除节点不可调度状态

升级后,Worker节点可能处于NotReady状态,需手动解除不可调度限制:

kubectl uncordon <node-name>  # 替换<node-name>为节点名称(通过kubectl get nodes查看)

4. 验证升级结果

4.1 检查节点状态

确认所有节点已恢复正常状态(Ready):

kubectl get nodes

4.2 检查Pod状态

确认所有Pod均在运行(Running):

kubectl get pods -A

4.3 检查组件版本

验证Master节点与Worker节点的Kubernetes版本一致:

kubectl version --short

5. 清理旧版本(可选)

若升级成功且运行稳定,可删除旧版本的Kubernetes组件以释放磁盘空间:

sudo yum remove -y kubeadm-<old-version> kubelet-<old-version> kubectl-<old-version>  # 替换<old-version>为旧版本号

注意事项

  • 滚动升级:对于生产环境的大型集群,建议逐个升级Worker节点,避免同时升级多个节点导致服务中断。
  • 测试环境验证:生产环境升级前,务必在测试环境中模拟升级流程,确认兼容性与稳定性。
  • 监控告警:升级过程中开启监控告警(如Prometheus+Alertmanager),及时发现并处理异常(如节点NotReady、Pod重启)。

0