意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议
配置详情
本产品仅限新用户首购专享!每人限购1台,续费5折
当前配置
数据中心: {{ getconfigInfoArea(productDetailInfo) }}
套餐规格: 2 核 2 G
带宽:
系统盘 {{ validateMySplit(ProductVM.getProductappointInfoBykey(productDetailInfo,'云系统盘'),'|',1) }} 性能型
IP 数 1 个
可选配置
操作系统:
VPC:
安全组:
购买时长:
1 月
我已阅读并同意《恒创科技服务协议》
购买前请阅读协议并勾选同意

如何在CentOS上升级Kubernetes集群

来源:互联网 编辑:云晓生
2025-09-22 12:32:29

在CentOS上升级Kubernetes集群的详细步骤

1. 升级前准备

1.1 备份关键数据

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

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

1.2 检查兼容性

  • 确认升级路径:Kubernetes不支持跨次版本升级(如1.27→1.29),必须逐次升级(1.27→1.28→1.29)。
  • 验证组件兼容性:参考Kubernetes官方升级指南,确保新版本与当前集群的容器运行时(Docker/containerd)、CNI插件(Calico/Flannel)、存储驱动等组件兼容。

1.3 更新系统及仓库

  • 更新CentOS系统:
    sudo yum update -y
    
  • 配置Kubernetes最新仓库(以CentOS 7为例,替换为对应版本):
    cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
    enabled=1
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
    EOF
    

2. 升级Master节点

2.1 升级kubeadm

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


如何在CentOS上升级Kubernetes集群

sudo yum update -y kubeadm

2.2 检查升级计划

通过kubeadm upgrade plan命令查看可升级的版本及所需操作:

sudo kubeadm upgrade plan

输出会显示当前版本、可升级的目标版本及兼容性检查结果。

2.3 执行升级

使用kubeadm upgrade apply命令升级Master节点(替换<目标版本>,如v1.28.2):

sudo kubeadm upgrade apply v1.28.2
  • 若提示确认,输入yes继续。
  • 升级完成后,手动升级控制平面组件(如kube-apiserver、kube-controller-manager、kube-scheduler):
    sudo systemctl restart kube-apiserver kube-controller-manager kube-scheduler
    

2.4 升级kubelet和kubectl

  • 升级kubelet:
    sudo yum update -y kubelet
    sudo systemctl daemon-reload
    sudo systemctl restart kubelet
    
  • 升级kubectl(可选,但建议同步):
    sudo yum update -y kubectl
    

3. 升级Worker节点

3.1 标记节点为不可调度

避免升级过程中新Pod调度到该节点:

kubectl cordon <节点名称>   如 kubectl cordon k8s-node01

3.2 驱逐节点上的Pod

将节点上的Pod安全驱逐至其他节点(--ignore-daemonsets忽略DaemonSet管理的Pod,--force强制驱逐):

kubectl drain <节点名称> --ignore-daemonsets --force

3.3 升级kubelet和kubectl

操作与Master节点一致:

sudo yum update -y kubelet kubectl
sudo systemctl daemon-reload
sudo systemctl restart kubelet

3.4 升级节点

使用kubeadm upgrade node命令升级Worker节点(需指定Master节点的Kubeadm版本):

sudo kubeadm upgrade node

3.5 恢复节点可调度

升级完成后,允许节点重新接收Pod调度:

kubectl uncordon <节点名称>

4. 升级后验证

4.1 检查节点状态

确认所有节点状态为Ready:

kubectl get nodes

4.2 检查Pod状态

确保所有Pod正常运行(无Error或CrashLoopBackOff):

kubectl get pods --all-namespaces

4.3 检查组件日志

查看Kubernetes组件日志,排查潜在错误:

sudo journalctl -u kubelet -f   实时查看kubelet日志
sudo journalctl -u kube-apiserver -f   查看apiserver日志

5. 清理旧版本(可选)

若升级成功且无问题,可删除旧版本组件以释放空间:

sudo yum remove -y kubeadm-<旧版本> kubelet-<旧版本> kubectl-<旧版本>

注意事项

  • 滚动升级:对于大型集群,建议逐个升级Worker节点,避免集群资源耗尽。
  • 测试环境验证:生产环境升级前,务必在测试环境模拟升级流程,确认兼容性。
  • 监控告警:升级过程中开启集群监控(如Prometheus),及时发现性能异常或错误。
  • 自定义配置:若集群有自定义配置(如kubelet参数、CNI配置),升级前备份并检查新版本的配置兼容性。
本网站发布或转载的文章均来自网络,其原创性以及文中表达的观点和判断不代表本网站。
上一篇: 如何评估CentOS上Kubernetes部署的性能 下一篇: Ubuntu PHP日志中的安全警告怎么办