首页主机资讯如何升级centos k8s版本

如何升级centos k8s版本

时间2025-10-15 22:55:03发布访客分类主机资讯浏览1361
导读:如何在CentOS上升级Kubernetes(K8s)版本 升级Kubernetes集群需遵循“准备充分、渐进执行、验证到位”的原则,以下是基于kubeadm工具的标准流程及关键注意事项: 一、升级前准备:规避风险的核心步骤 备份关键数...

如何在CentOS上升级Kubernetes(K8s)版本
升级Kubernetes集群需遵循“准备充分、渐进执行、验证到位”的原则,以下是基于kubeadm工具的标准流程及关键注意事项:

一、升级前准备:规避风险的核心步骤

  1. 备份关键数据
    备份集群配置(/etc/kubernetes/目录)和etcd数据(etcd是K8s的核心存储组件),确保升级失败时可快速恢复。etcd备份命令示例:

    etcdctl snapshot save /data/etcd/etcd_bak.db \
      --endpoints=https://127.0.0.1:2379 \
      --cacert=/etc/kubernetes/pki/etcd/ca.crt \
      --cert=/etc/kubernetes/pki/etcd/server.crt \
      --key=/etc/kubernetes/pki/etcd/server.key
    
  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. 确认升级路径
    Kubernetes不支持跨多个次要版本跳跃升级(如从1.22直接升级到1.25),必须遵循“相邻次要版本递进”规则(如1.22→1.23→1.24→1.25)。可通过kubectl version查看当前版本,在官方升级文档中确认目标版本的兼容性。

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

    • 容器运行时:Docker 1.24+已弃用,需切换为containerd(K8s 1.25对应containerd 1.6+);
    • 网络插件:Calico 3.24支持K8s 1.25,Flannel 0.20.0及以上支持K8s 1.25;
    • 工具链:kubectl版本需与集群版本相差不超过1个次要版本(如集群1.24,kubectl需为1.23-1.25)。
  5. 配置Kubernetes Repo仓库
    在所有节点上配置官方Kubernetes repo,确保能下载新版本软件包:

    cat <
        <
        EOF >
         /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    EOF
    

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

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

(1)升级kubeadm工具
在Master节点上,使用yum安装新版本kubeadm(以升级到1.25为例):

sudo yum install -y kubeadm-1.25.0-00 --disableexcludes=kubernetes

(2)检查升级计划
运行kubeadm upgrade plan,确认集群可升级的目标版本及需要修改的配置:

kubeadm upgrade plan
# 输出示例:建议升级到v1.25.0,当前版本v1.24.3

(3)执行控制平面升级
使用kubeadm upgrade apply升级控制平面组件(kube-apiserverkube-controller-managerkube-scheduler):

sudo kubeadm upgrade apply v1.25.0

升级完成后,系统会提示“升级成功”,控制平面组件会自动重启。

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

sudo yum install -y kubelet-1.25.0-00 kubectl-1.25.0-00 --disableexcludes=kubernetes
sudo systemctl daemon-reload
sudo systemctl restart kubelet

(5)解除Master节点保护
升级后,将Master节点标记为可调度(允许Pod调度到Master):

kubectl uncordon <
    master-node-name>
    

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

(1)逐个升级工作节点
为避免集群中断,每次仅升级1个Worker节点,重复以下步骤:

  • 腾空节点:将节点标记为不可调度,并驱逐所有Pod(DaemonSet管理的Pod会自动重建):
    kubectl drain <
        worker-node-name>
         --ignore-daemonsets
    
  • 升级kubeadm:在工作节点上安装新版本kubeadm(与Master版本一致):
    sudo yum install -y kubeadm-1.25.0-00 --disableexcludes=kubernetes
    
  • 升级kubelet和kubectl:同Master节点步骤,升级kubeletkubectl并重启服务。

(2)升级节点组件
在Master节点上,使用kubeadm upgrade node升级工作节点的组件:

sudo kubeadm upgrade node

(3)解除节点保护
升级完成后,将工作节点标记为可调度:

kubectl uncordon <
    worker-node-name>
    

(4)验证节点状态
等待节点状态变为Readykubectl get nodes),确认Pod恢复正常运行(kubectl get pods --all-namespaces)。

三、升级后验证:确保集群稳定性

  1. 检查集群状态

    kubectl get nodes  # 所有节点应为Ready状态
    kubectl get pods -A  # 所有Pod应为Running状态
    
  2. 检查组件日志
    查看K8s组件日志,确认无错误信息:

    sudo journalctl -u kubelet -f
    sudo journalctl -u kube-apiserver -f
    
  3. 测试业务功能
    访问集群内的业务Pod(如curl http://< pod-ip> :< port> ),确认业务正常运行。

四、注意事项:避免升级失败的“坑”

  • 禁止跳过版本:直接跨多个次要版本升级(如1.23→1.25)可能导致组件不兼容,必须逐步升级。
  • 不要在业务高峰期操作:升级过程中可能出现短暂的服务不可用,建议在低峰期进行。
  • 保留旧版本备份:升级前备份/etc/kubernetes//var/lib/etcd/,以便快速回滚。
  • 监控集群状态:升级过程中使用Prometheus、Grafana等工具监控集群指标(如CPU、内存、Pod状态),及时处理异常。

通过以上步骤,可确保CentOS上的Kubernetes集群平稳升级到目标版本,同时保障业务连续性。升级前务必在测试环境验证流程,降低生产环境风险。

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


若转载请注明出处: 如何升级centos k8s版本
本文地址: https://pptw.com/jishu/727497.html
centos k8s集群扩展策略 怎样评估centos上k8s部署的效果

游客 回复需填写必要信息