用途 该技能用于 Kubespray 集群运维生命周期操作,包括升级 Kubernetes 版本、增加或移除节点、伸缩集群,以及 etcd 备份与恢复。文档同时明确了它不负责的领域:初始部署、故障排查与证书问题。
主要能力
- 节点管理:worker 节点通过 scale.yml 扩容;通过 remove-node.yml 缩容;对不可达节点使用 reset_nodes=false 与 allow_ungraceful_removal=true 强制移除;控制平面节点替换需使用 cluster.yml,且新控制平面节点必须追加到 [kube_control_plane] 末尾。
- 版本升级:提供不安全的 cluster.yml 升级(仅限开发/测试环境)与生产推荐的 upgrade-cluster.yml 滚动升级;支持通过 serial 控制并行度,并可用 upgrade_node_confirm 或 upgrade_node_pause_seconds 在节点之间暂停;支持补丁、次版本以及需要先升级 Kubespray 本身的跨版本升级。
- etcd 备份与恢复:提供 snapshot save 与 snapshot status 命令、基于 systemd timer 的每日自动备份示例脚本,以及单节点与多节点集群的快照恢复命令。
- 集群重置:reset.yml 会销毁包括 etcd 在内的全部集群数据。
使用方式 操作以 inventory.ini 和 ansible-playbook 命令为核心。扩容 worker 时执行 scale.yml 并用 --limit 指定新节点;缩容时执行 remove-node.yml 并传入 -e node=...;升级时执行 upgrade-cluster.yml 并传入 -e kube_version="x.y.z",通常先用 --limit "kube_control_plane:etcd" 升级控制平面与 etcd,再逐个升级 worker。etcd 备份与恢复使用 etcdctl 及 /etc/ssl/etcd/ssl 下的证书路径。
适用场景 适用于生产或测试环境中的 Kubernetes 集群维护:补丁升级、次版本升级、跨 Kubespray 版本升级、worker 扩容与缩容、故障节点清理、控制平面节点替换,以及升级前后的 etcd 备份与灾难恢复演练。
限制与注意事项
- 必须逐个小版本升级,不允许跳版本。
- scale.yml 仅用于 worker 节点;控制平面节点必须使用 cluster.yml。
- [kube_control_plane] 中列出的第一个节点不能通过 remove-node.yml 移除,它也是初始 etcd 引导节点。
- 如果 PodDisruptionBudget 设置了 maxUnavailable: 0,drain 会被无限阻塞,因此移除节点前需审计 PDB。
- Kubespray 不会自动更新 inventory.ini,移除节点后需要手动同步。
- 被强制移除的节点若重新上线,必须先执行 kubeadm reset 再重新加入。
- 多节点 etcd 恢复需要使用不同的 --initial-cluster-token。
- 文档中的版本号、组件版本与路径均为示例,实际以集群环境和官方发布说明为准。
- 原文结尾部分内容被截断,playbook 参考表中 upgrade-cluster.yml 的用途描述不完整。