云原生备份方案:Velero 工具实现 K8s 资源与持久化数据的全量备份
·
Velero 实现 Kubernetes 全量备份方案
Velero 是专为 Kubernetes 设计的开源备份工具,支持集群资源、持久卷的全量备份与灾难恢复。以下是完整实现方案:
一、核心备份原理
-
资源备份
通过 Kubernetes API 捕获 YAML 声明文件,存储为 JSON 格式。备份对象包括:- 工作负载(Deployment/StatefulSet)
- 配置(ConfigMap/Secret)
- 服务(Service/Ingress)
- 自定义资源(CRD)
-
持久卷备份
利用云厂商快照能力(如 AWS EBS Snapshot),通过集成插件实现数据一致性备份,满足 RPO 要求。
二、部署流程
# 1. 安装 Velero CLI
brew install velero # macOS
或
curl -LO https://github.com/vmware-tanzu/velero/releases/download/v1.10.0/velero-v1.10.0-linux-amd64.tar.gz
# 2. 配置云存储(以 AWS S3 为例)
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.6.0 \
--bucket velero-backups \
--backup-location-config region=us-west-1 \
--snapshot-location-config region=us-west-1
三、全量备份操作
# 备份整个命名空间(含持久卷)
velero backup create full-backup-2023 --include-namespaces=prod
# 备份整个集群(排除 kube-system)
velero backup create cluster-backup --exclude-namespaces=kube-system
四、备份验证
# 查看备份状态
velero backup describe full-backup-2023 --details
# 检查持久卷快照
velero snapshot get
五、恢复流程
# 恢复命名空间资源
velero restore create --from-backup full-backup-2023
# 恢复持久卷数据(自动关联 PV/PVC)
velero restore create --from-backup full-backup-2023 --restore-volumes
六、关键配置项
-
备份策略
apiVersion: velero.io/v1 kind: Schedule spec: schedule: "0 3 * * *" # 每日凌晨3点全量备份 template: includeNamespaces: ["prod"] snapshotVolumes: true -
存储位置优化
- 启用
--use-restic实现非云环境卷备份 - 配置
volume-snapshot-locations指定快照区域
- 启用
七、灾难恢复场景验证
# 模拟集群故障后恢复
velero restore create --from-backup cluster-backup --wait
八、注意事项
-
数据一致性
对有状态应用(如数据库)需预先执行kubectl annotate pod/db app.velero.io/backup-volumes=datadir确保静默写入 -
备份加密
启用--cacert和--encrypted参数保护备份数据 -
监控指标
集成 Prometheus 监控velero_backup_success_total等关键指标
最佳实践:建议结合 Velero 的定期全量备份(每日)+ Restic 增量备份(每小时),实现 $RPO<1h$ 且 $RTO<30min$ 的业务连续性保障。测试环境应每月执行恢复演练验证备份有效性。
更多推荐
所有评论(0)