首页主机资讯Ubuntu Kubernetes 集群升级注意事项

Ubuntu Kubernetes 集群升级注意事项

时间2026-01-18 15:58:04发布访客分类主机资讯浏览509
导读:Ubuntu 上 Kubernetes 集群升级注意事项 一 版本与路径规划 明确目标版本后,遵循“每次仅升级一个次要版本”的原则,例如从 v1.28 → v1.29 → v1.30;跨多个次要版本直接升级不被支持。升级前阅读目标版本的...

Ubuntu 上 Kubernetes 集群升级注意事项

一 版本与路径规划

  • 明确目标版本后,遵循“每次仅升级一个次要版本”的原则,例如从 v1.28 → v1.29 → v1.30;跨多个次要版本直接升级不被支持。升级前阅读目标版本的 Release Notes / 变更日志,关注 Deprecations / Removals
  • 遵守组件版本偏差策略:kubelet 不得高于 kube-apiserver;通常要求 kubelet 与 apiserver 的小版本差不超过 1;多个 apiserver 实例间版本差不超过 1kubectl 与 apiserver 的差距通常不超过 1 个次要版本。
  • 在 Ubuntu 上用包管理器确认可用补丁版本:执行 apt update & & apt-cache madison kubeadm,选择形如 1.29.x-00 的目标版本,避免误装跨主次版本包。

二 升级前检查与备份

  • 集群健康检查:确认所有节点 Ready、核心组件 Running,检查 etcd 集群健康与数据一致性,评估工作负载与 存储/网络 的兼容性(如 emptyDir 在驱逐时的数据风险)。
  • 备份关键数据与配置:
    • 备份 etcd(示例):
      ETCDCTL_API=3 etcdctl snapshot save /tmp/etcd-backup.db \ –endpoints=https://127.0.0.1:2379 \ –cacert= --cert= --key=
    • 备份 /etc/kubernetes 目录(包含集群配置与证书)。
  • 基础设施与系统:确保 NTP 同步防火墙/安全组策略允许 6443/10250 等端口、swap 已禁用,并准备回滚方案(如回滚包版本、恢复备份、回滚清单)。

三 升级顺序与操作步骤

  • 总体顺序:先控制平面,后工作节点;逐个节点进行,升级期间保持集群可用的最小副本数。
  • 控制平面节点(首个):
    1. 标记维护:kubectl cordon ;如该节点也跑业务负载,执行 kubectl drain --ignore-daemonsets。
    2. 升级 kubeadm:apt-mark unhold kubeadm & & apt-get install -y kubeadm=< 目标版本> & & apt-mark hold kubeadm。
    3. 检查与执行:kubeadm upgrade plan;随后 kubeadm upgrade apply < 目标版本> (会自动处理控制面静态 Pod 与证书续期,如需跳过证书续期可用 –certificate-renewal=false)。
    4. 升级 kubelet/kubectl:apt-mark unhold kubelet kubectl & & apt-get install -y kubelet=< 目标版本> kubectl=< 目标版本> & & apt-mark hold kubelet kubectl。
    5. 重启 kubelet:systemctl daemon-reload & & systemctl restart kubelet;kubectl uncordon 恢复调度。
  • 其他控制平面节点:执行 kubeadm upgrade node(无需再执行 plan 与 CNI 升级)。
  • 工作节点:与控制面节点类似,先 cordon/drain,再升级 kubeadm/kubelet/kubectlrestart kubelet,最后 uncordon
  • 组件与插件:按各组件文档升级 CNI、CSI、Ingress Controller、CoreDNS 等,确保与目标版本兼容。

四 兼容性风险与验证

  • API 弃用与 Helm:升级后若遇到类似 “no matches for kind … in version …” 的错误,说明清单使用了已被移除/弃用的 API 版本。建议在升级前用 kubectl api-resourceshelm lint --stricthelm template --validate --kube-version < 目标版本> 做静态与模拟校验,并按需迁移到 apps/v1、networking.k8s.io/v1 等稳定版本。
  • 清单与控制器:升级 kubeadm 不会自动改写你的业务清单;对使用旧 API 的资源,可用 kubectl convert 辅助迁移,并在 CI 中固化版本校验。
  • 升级后验证:逐节点确认 STATUS=ReadyVERSION 正确;检查 kube-system 核心组件 Running;查看 kubelet 日志(journalctl -xeu kubelet);验证关键业务与存储卷可用性。

五 回滚与常见坑

  • 回滚策略:若升级失败,优先恢复到升级前备份(如 etcd 快照/etc/kubernetes 配置),并将 kubeadm/kubelet/kubectl 降级到原版本,重启服务后重新加入集群。
  • 常见坑与规避:
    • 禁止跨多个次要版本升级;控制面与 kubelet 版本偏差超限会导致不可预期问题。
    • 节点维护务必 cordon/drain,并处理好 emptyDir 与本地卷数据风险。
    • 升级期间避免同时操作多个节点,防止控制面或工作负载容量不足。
    • 包被 hold 导致无法升级时,使用 –allow-change-held-packages 或先解除 hold。
    • 单节点集群无法在驱逐后调度 Pod,升级会短时中断业务,需提前评估或准备替代节点。

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


若转载请注明出处: Ubuntu Kubernetes 集群升级注意事项
本文地址: https://pptw.com/jishu/784468.html
Debian挂载CDROM操作 Ubuntu MariaDB如何进行版本选择

游客 回复需填写必要信息