公司动态
kubeadm-playbook集群升级指南:Kubernetes小版本安全升级的7个关键步骤与注意事项
kubeadm-playbook集群升级指南Kubernetes小版本安全升级的7个关键步骤与注意事项【免费下载链接】kubeadm-playbookFully fledged (HA) Kubernetes Cluster using official kubeadm, ansible and helm. Tested on RHEL/CentOS/Ubuntu with support of http_proxy, dashboard installed, ingress controller, heapster - using official helm charts项目地址: https://gitcode.com/gh_mirrors/ku/kubeadm-playbookkubeadm-playbook是一个基于官方 kubeadm、Ansible 和 Helm 构建的 Kubernetes 高可用集群自动化项目覆盖安装、附加组件与运维全流程。本文将带你通过 7 个关键步骤完成一次安全、可回退的 Kubernetes 小版本升级并附上生产环境升级的注意事项清单。为什么升级要用 kubeadm 而不是重建集群kubeadm 是 Kubernetes 官方发布的安装工具官方文档明确推荐用kubeadm upgrade完成集群版本升级。kubeadm-playbook 的作者在 docs/upgrade_cluster.md 中也持同样的态度kubeadm 升级流程清晰且简单围绕它做大量自动化并没有必要只需在所有机器上按顺序循环执行即可从 master 节点开始。因此最佳实践是升级动作交给 kubeadm而 kubeadm-playbook 的 Ansible role 用于升级前后的准备、组件包管理和健康检查。项目提供的 site.yml 支持--tags精确执行某一阶段任务非常适合升级维护场景例如运行--tags cluster_sanity做无损的集群体检。升级前必读3 条黄金法则⏳一次只升一个版本不要从 1.30 直接跳到 1.34必须逐级升级1.30 → 1.31 → … → 1.34。先在非生产环境演练作者建议先在备用机器上熟悉一遍完整流程。先备份再动手每台节点升级前先备份/etc/kubernetes目录这是官方文档的第一步也是项目文档的明确要求。7 个关键步骤Kubernetes 小版本升级完整流程步骤 1确认当前版本并规划升级路径升级前先用kubectl get version和kubeadm version确认集群当前版本与各节点工具版本。规划好从当前版本到目标版本的逐级路径。 小技巧升级前建议先熟悉 docs/upgrade_cluster.md 与 docs/add-remove-nodes.md后者能帮助你在演练环境中快速搭建、销毁节点。步骤 2备份关键目录对每一台节点执行备份/etc/kubernetes包含 PKI 证书、kubelet 与 apiserver 配置高可用集群额外备份/var/lib/etcd记录 Helm 组件清单helm list --all-namespaces升级后可能需要重新校验步骤 3升级 kube* 工具包到目标版本kubelet、kubeadm、kubectl 三个工具必须与集群目标版本保持一致官方约束工具版本需与集群同小版本。kubeadm-playbook 通过 group_vars/all/global.yaml 统一管理这三个包的版本修改KUBERNETES_VERSION为目标版本如1.34.0kubeadm_version、kubelet_version、kubectl_version会自动跟随集群期望版本由 group_vars/all/ClusterConfiguration.yml 中的kubernetesVersion字段传入kubeadm⚠️ 注意Ansible 默认不会自动降级软件包。如果你的目标是降级工具需要将full_kube_reinstall设为True它会先卸载 kubectl、kubelet、kubeadm、kubernetes-cni 再重装。在 Debian/Ubuntu 环境中升级完成后可参考 docs/PRODUCTION_TIPS.md 使用apt-mark hold锁定 k8s 工具包防止系统apt upgrade误升组件下次升级前再apt-mark unhold解锁。步骤 4用 kubeadm upgrade plan 预览升级计划在 primary-master 上执行kubeadm upgrade plan。它会输出完整的升级清单每个控制平面组件apiserver、controller-manager、scheduler、kubelet 和 etcd 的镜像变更以及证书续期情况。这一步相当于干跑dry-run零风险但能帮你发现镜像仓库拉取、版本不可用等问题——内网环境请确认imageRepository指向的内部镜像源已同步新镜像。步骤 5逐台升级控制平面节点升级顺序从 primary-master 开始逐台执行每台节点上依次完成升级节点上的 kubeadm 与 kubelet 包kubeadm upgrade node更新该节点控制平面容器重启 kubelet 高可用HA集群的关键约束控制平面节点随时必须保持1/2 1 的多数派quorum。3 台 master 时任意时刻至少 2 台在线所以逐台升级、升级完一台确认就绪后再动下一台。步骤 6应用集群级升级kubeadm upgrade apply在 primary-master 上执行kubeadm upgrade apply 目标版本它会升级集群级组件Control Plane、kube-apiserver 等自动重新生成并续期集群证书打印 Worker 节点的升级指引join 指令会随版本变化 关于证书焦虑集群证书默认 1 年过期而每次 kubeadm 升级都会重新生成证书。所以只要保持每年至少升级一次这也是跟上安全补丁的最低要求就不必担心证书到期问题——这正是定期升级的隐藏福利。步骤 7逐台升级 Worker 节点并全量验证对每台 worker 节点升级 kubelet 包 →kubeadm upgrade node→ 重启 kubelet。全部完成后运行kubectl get nodes确认所有节点Ready使用 kubeadm-playbook 的健康检查ansible-playbook -i hosts site.yml --tags cluster_sanity它会校验节点状态、Pod 运行情况并打印集群详情只读不做任何变更检查 templates/ 中各 Helm 组件dashboard、nginx-ingress、metallb 等版本是否兼容新集群必要时按 group_vars/all/addons.yaml 配置更新图表版本注意事项清单 ⚠️#事项说明1禁止跳版本必须逐级升级跨大版本直接升级大概率失败2工具版本对齐kubeadm/kubelet/kubectl 与目标集群版本一致3保持 HA 法定人数3 台 master 任意时刻至少 2 台在线4先备份 /etc/kubernetes官方与项目文档的共同第一要求5内网镜像源同步升级前确认内部 registry 已有新版 k8s 核心镜像6锁定/解锁 k8s 工具包Debian 系用apt-mark hold/unhold管理见 docs/PRODUCTION_TIPS.md7维护操作用 --tags对存量集群运行 playbook 时务必指定 tags避免触发整集群重建另外提醒不要在升级失败时图省事直接重跑 site.yml 全流程——默认流程会重置并重建集群。升级回退或局部修复请组合使用 tags如--tags node、--tags cluster_sanity并只把目标机器放入 inventory。常见问答Q升级需要停机吗A不需要整体停机。控制平面与 worker 逐台滚动升级配合多数派保证与 Pod 驱逐策略业务可继续提供服务。Qkubeadm-playbook 能自动化整个升级吗A项目的定位是升级交给 kubeadm 官方工具Ansible 负责组件包管理、准备与验证。这符合 KISS 原则把最敏感的升级步骤保持透明可控。Q单节点开发环境升级要注意什么A流程相同只是没有 HA 约束。建议在演练集群可用 Vagrantfile 快速搭建先行验证。按这 7 个步骤走配合升级后的cluster_sanity体检你就能把 Kubernetes 小版本升级变成一件可预期、可回退、可复制的例行操作。【免费下载链接】kubeadm-playbookFully fledged (HA) Kubernetes Cluster using official kubeadm, ansible and helm. Tested on RHEL/CentOS/Ubuntu with support of http_proxy, dashboard installed, ingress controller, heapster - using official helm charts项目地址: https://gitcode.com/gh_mirrors/ku/kubeadm-playbook创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考