备份与灾难恢复
掌握集群备份的核心对象与优先级
掌握 etcd 快照备份与恢复方法
了解应用数据与资源定义的备份方案
核心讲解
(1)备份核心
K8s 集群备份的核心是 etcd 备份—— 集群所有状态、配置、资源定义都存储在 etcd 中,etcd 损坏 = 集群损坏。
应用数据:PVC 持久卷数据单独备份,数据库、中间件按各自最佳实践备份
资源定义:所有 YAML 文件 Git 版本管理,作为备份补充
(2)etcd 备份与恢复
快照备份:通过 etcdctl 生成一致性快照文件
全量恢复:集群故障时,所有节点从同一个快照恢复数据
注意:恢复操作必须所有 etcd 节点使用同一份快照,保证数据一致
(3)应用级备份
无状态应用:保留部署 YAML,重新部署即可恢复
有状态应用:PVC 定期快照、备份工具备份数据
配置与密钥:ConfigMap、Secret 导出 YAML 离线备份
操作示例
# ===== etcd 快照备份 =====
# 进入 etcd 节点或 etcd Pod 执行
etcdctl snapshot save /backup/snapshot.db
# 查看快照信息
etcdctl snapshot status /backup/snapshot.db
# ===== 集群恢复步骤 =====
# 1. 停止所有 kube-apiserver 进程
# 2. 停止所有 etcd 进程
# 3. 清理原有数据目录
# 4. 每个节点执行快照恢复
etcdctl snapshot restore /backup/snapshot.db \
--data-dir=/var/lib/etcd
# 5. 启动 etcd、kube-apiserver
# 6. 验证集群状态与资源完整性
# ===== 资源定义批量导出 =====
# 导出所有 Deployment
kubectl get deploy -A -o yaml > all-deploy-backup.yaml
# 导出指定命名空间全部资源
kubectl get all -n default -o yaml > default-ns-backup.yaml
常见误区
备份了 etcd 就万无一失:etcd 只存集群状态,PVC 业务数据要单独备份
恢复单节点就行:集群恢复必须所有节点使用同一个快照,否则数据不一致集群脑裂
备份不用验证:备份必须定期演练恢复流程,否则故障时才发现备份不可用
有高可用就不用备份:高可用防单点故障,误操作、逻辑删除、数据损坏必须靠备份恢复
课后练习
执行一次 etcd 快照备份,查看快照信息
导出 default 命名空间所有资源的 YAML 文件
口述 etcd 恢复的标准流程与注意事项
思考:为什么说 etcd 是 Kubernetes 集群的心脏?

