centos

centos k8s部署升级流程

小樊
40
2025-11-08 05:35:15
栏目: 智能运维

CentOS环境下Kubernetes集群部署升级流程

一、升级前准备

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

    ETCDCTL_API=3 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 nodes确认所有节点状态为Ready,使用kubectl get pods --all-namespaces检查所有Pod是否正常运行,确保无未完成的作业或异常任务。

  3. 验证版本兼容性
    查阅Kubernetes官方文档(如发行说明),确认目标版本与当前集群版本的兼容性(如不能跳过次版本,仅支持1.y→1.y+1的升级路径)。

  4. 更新Kubernetes仓库
    确保所有节点的Kubernetes仓库为最新版本(以CentOS 7为例):

    cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    

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

  1. 升级kubeadm工具
    安装目标版本的kubeadm(以升级到v1.28.2为例):

    sudo yum install -y kubeadm-1.28.2-0 --disableexcludes=kubernetes
    sudo systemctl daemon-reload
    
  2. 检查升级计划
    运行kubeadm upgrade plan查看集群是否可升级,以及可升级到的版本列表(如提示“Recommended version: v1.28.2”则表示可升级)。

  3. 执行控制平面升级
    使用kubeadm upgrade apply命令升级控制平面组件(包括kube-apiserver、kube-controller-manager、kube-scheduler):

    sudo kubeadm upgrade apply v1.28.2
    

    执行后会自动更新控制平面组件的静态Pod清单。

  4. 升级kubelet和kubectl
    安装目标版本的kubelet和kubectl:

    sudo yum install -y kubelet-1.28.2-0 kubectl-1.28.2-0 --disableexcludes=kubernetes
    sudo systemctl daemon-reload
    sudo systemctl restart kubelet
    
  5. (可选)升级CNI驱动
    若使用第三方CNI插件(如Calico、Flannel),需升级到与Kubernetes版本兼容的版本(参考插件官方文档)。

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

  1. 逐个标记节点为不可调度并驱逐负载
    避免升级过程中影响业务运行,依次对每个工作节点执行:

    kubectl cordon <节点名称>  # 标记节点为不可调度
    kubectl drain <节点名称> --ignore-daemonsets --force  # 驱逐节点上的Pod(--ignore-daemonsets忽略DaemonSet管理的Pod)
    
  2. 升级工作节点组件
    在工作节点上执行与Master节点相同的步骤:升级kubeadm、kubelet、kubectl,并重启kubelet服务。

  3. 升级节点上的kubeadm

    sudo yum install -y kubeadm-1.28.2-0 --disableexcludes=kubernetes
    
  4. 执行节点升级
    使用kubeadm upgrade node命令升级节点上的控制平面组件(若节点同时是控制平面节点,则无需此步):

    sudo kubeadm upgrade node
    
  5. 重启kubelet并解除节点保护

    sudo systemctl daemon-reload
    sudo systemctl restart kubelet
    kubectl uncordon <节点名称>  # 标记节点为可调度,恢复业务运行
    

四、升级后验证

  1. 检查集群状态
    使用kubectl get nodes确认所有节点状态为Ready,使用kubectl get pods --all-namespaces检查所有Pod是否正常运行(无ErrorCrashLoopBackOff状态)。

  2. 验证业务功能
    检查核心业务Pod(如Web服务、数据库)是否正常响应,确保升级未影响业务逻辑。

  3. 清理旧版本组件
    若升级成功,可清理旧版本的kubeadm、kubelet等组件(谨慎操作,避免误删):

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

五、注意事项

0
看了该问题的人还看了