温馨提示×

Debian如何升级Kubernetes集群配置

小樊
32
2025-12-11 03:39:11
栏目: 智能运维

Debian上升级Kubernetes集群配置的标准流程

一 升级前准备

  • 备份关键数据与清单:备份**/etc/kubernetes//var/lib/etcd/;如使用etcd**,建议用etcdctl snapshot save进行快照备份,确保可回滚。检查集群健康与节点状态,确保没有未完成的作业或长时间阻塞的任务。
  • 系统与安全:执行sudo apt update && sudo apt upgrade -y更新系统包;确保禁用 Swap(swapoff -a 并注释 /etc/fstab 中的 swap 行),避免 kubelet 异常。
  • 版本策略:遵循“一次只跨一个次要版本”的原则(如从1.28.x → 1.29.x),不要跨多个小版本;升级前阅读目标版本的发行说明与变更对 API/清单的影响。
  • 运行时与网络:如使用Docker,注意自v1.24起移除 dockershim,建议迁移到containerd;确认CNI 网络插件与新版本兼容,并准备其升级步骤。

二 升级控制平面节点

  • 升级 kubeadm:在 Debian 上通过 APT 升级到目标小版本的kubeadm(保持 kubelet/kubectl 暂不升级),或下载指定版本的 kubeadm 二进制替换。
  • 检查升级计划:执行kubeadm upgrade plan,确认组件可升级到目标版本与所需变更。
  • 执行控制面升级:运行kubeadm upgrade apply <目标版本>;如需临时跳过证书自动续期,可加**–certificate-renewal=false**(不建议生产长期使用)。
  • 腾空与恢复节点:对控制面节点执行kubectl drain <节点名> --ignore-daemonsets,随后升级 kubelet/kubectl 并重启服务,最后**kubectl uncordon <节点名>**恢复调度。
  • 多控制面:其余控制面节点执行kubeadm upgrade node,无需再次执行 plan 与 CNI 升级。

三 升级工作节点

  • 逐节点滚动升级:每次只升级一个工作节点,升级期间保持集群可用容量。
  • 标准步骤:
    1. 升级 kubeadm;
    2. kubectl drain <节点名> --ignore-daemonsets
    3. 升级 kubelet/kubectl 并重启(systemctl daemon-reload && systemctl restart kubelet);
    4. **kubectl uncordon <节点名>**恢复调度。
  • 验证:所有节点升级后,确认kubectl get nodes均为Ready

四 升级后验证与常见问题

  • 版本与组件:执行kubectl version --shortkubectl get pods -A检查控制面与系统组件运行状态;按需升级CoreDNS/kube-proxy清单与CNI 插件(如 Flannel/Calico),确保与podSubnet等配置一致。
  • 证书检查:使用kubeadm alpha certs check-expiration(或新版本等效命令)查看证书有效期,必要时续期。
  • 回滚与排障:若kubeadm upgrade apply失败,按提示回滚;常见原因包括镜像不可达节点 NotReadyCNI 不兼容等,先恢复节点可调度并排查网络与镜像拉取问题。

五 变更配置的安全做法

  • 使用 kubeadm 管理配置:通过kubeadm init phase upload-configkubeadm upgrade应用配置变更,避免手工改动静态 Pod 清单;升级前后用kubectl -n kube-system get cm kubeadm-config -oyaml核对配置。
  • 清单与 API 变更:升级后按新版本的API 变更调整 Deployment/Service/Ingress 等清单(如 apiVersion、字段弃用),先在测试环境验证。
  • 扩缩容与版本对齐:新增节点应与集群目标小版本一致;升级窗口内避免并行大规模变更。

0