4. Velero 全量备份实战:创建第一个全量备份
全量备份是 Velero 最基础也是最核心的功能。本章将带领你完成第一个全量备份任务:备份指定 Namespace 下的 Deployment 与 ConfigMap,并掌握查看备份日志的方法。通过本实战,你将建立对 Velero 备份流程的完整认知。
4.1 备份前的环境检查
在执行备份前,请确认以下环境状态:
| 检查项 | 验证命令 | 预期结果 |
|---|---|---|
| Velero 安装状态 | velero version |
显示 Client 与 Server 版本号 |
| 存储插件就绪 | velero plugin list |
列出已安装的存储插件(如 AWS、Azure、GCP) |
| 目标 Namespace 存在 | kubectl get ns <namespace> |
Namespace 状态为 Active |
| 目标资源存在 | kubectl get deploy,cm -n <namespace> |
至少存在一个 Deployment 和一个 ConfigMap |
建议: 在生产环境执行备份前,先在测试 Namespace 中创建一组示例 Deployment 和 ConfigMap,确保备份流程可验证。
4.2 创建第一个全量备份
使用 velero backup create 命令创建全量备份。以下命令将备份 production Namespace 下的所有 Deployment 和 ConfigMap:
velero backup create first-full-backup \
--include-namespaces production \
--include-resources deployments,configmaps \
--ttl 72h0m0s \
--default-volumes-to-restic
参数说明:
first-full-backup:备份名称,需全局唯一--include-namespaces:指定备份的 Namespace--include-resources:指定备份的资源类型,多个资源用逗号分隔--ttl:备份保留时间,超过此时间后 Velero 会自动清理--default-volumes-to-restic:启用 Restic 进行卷备份(可选)
注意: 如果未指定
--include-resources,Velero 会备份指定 Namespace 下的所有资源(包括 Service、Pod、Secret 等)。建议首次备份时明确指定资源范围,避免数据量过大。
4.3 备份流程可视化
下图展示了 Velero 全量备份的完整执行流程:
4.4 查看备份状态与日志
备份创建后,使用以下命令查看备份状态:
velero backup describe first-full-backup --details
输出示例:
Name: first-full-backup
Namespace: velero
Labels: velero.io/storage-location=default
Annotations: velero.io/source-cluster-k8s-gitversion=v1.27.3
Phase: Completed
Namespaces:
Included: production
Excluded: <none>
Resources:
Included: deployments, configmaps
Excluded: <none>
Cluster-scoped: auto
Hooks: <none>
Backup Format Version: 1.1.0
Started: 2025-01-15 10:00:00 +0800 CST
Completed: 2025-01-15 10:00:12 +0800 CST
Expiration: 2025-01-18 10:00:00 +0800 CST
Total items to be backed up: 12
Items backed up: 12
Velero-Native Snapshots: <none included>
关键字段解读:
| 字段 | 含义 | 常见状态 |
|---|---|---|
| Phase | 备份当前阶段 | Completed / Failed / InProgress |
| Items backed up | 实际备份的资源数量 | 应与 Total items 一致 |
| Errors | 备份过程中的错误数 | 0 表示成功 |
| Warnings | 备份过程中的警告数 | 非 0 时需关注 |
4.5 查看详细备份日志
当备份状态为 Failed 或需要排查细节时,查看日志是首要手段:
velero backup logs first-full-backup
日志输出示例:
time="2025-01-15T10:00:01+08:00" level=info msg="Starting backup" backup=velero/first-full-backup
time="2025-01-15T10:00:02+08:00" level=info msg="Getting client for backup" backup=velero/first-full-backup
time="2025-01-15T10:00:03+08:00" level=info msg="Backing up resources" backup=velero/first-full-backup
time="2025-01-15T10:00:05+08:00" level=info msg="Backed up 5 items" backup=velero/first-full-backup progress=5/12
time="2025-01-15T10:00:08+08:00" level=info msg="Backed up 10 items" backup=velero/first-full-backup progress=10/12
time="2025-01-15T10:00:10+08:00" level=info msg="Backed up 12 items" backup=velero/first-full-backup progress=12/12
time="2025-01-15T10:00:12+08:00" level=info msg="Backup completed" backup=velero/first-full-backup
日志分析技巧:
- 搜索
level=error快速定位失败原因 - 搜索
level=warning查看资源跳过或权限不足的提示 - 关注
progress字段,确认备份进度是否正常推进 - 如果日志中大量出现
context deadline exceeded,可能是网络或存储超时
4.6 验证备份完整性
备份完成后,建议通过以下方式验证备份数据是否完整:
- 检查备份文件列表: 直接查看对象存储中备份目录的文件结构
- 使用 velero backup describe: 确认
Items backed up与预期一致 - 模拟恢复测试: 在测试集群中执行
velero restore create --from-backup first-full-backup验证恢复结果
以下命令可直接查看备份在对象存储中的文件清单:
velero backup describe first-full-backup --details | grep -A 20 "Resource List"
4.7 常见问题与排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 备份 Phase 为 Failed | 存储插件未正确配置 | 检查 velero plugin list 和存储凭证 |
| 备份进度卡在 0% | Kubernetes API 不可达 | 检查 kubeconfig 和集群状态 |
| 备份完成但 Items 为 0 | 资源类型或 Namespace 名称错误 | 确认 --include-resources 和 --include-namespaces 参数 |
| 日志显示权限错误 | Velero ServiceAccount 缺少 RBAC 权限 | 检查 Velero 的 ClusterRole 和 RoleBinding |
最佳实践: 建议将备份命令写入 Shell 脚本或 CI/CD 流水线,并添加备份完成后的自动验证步骤。例如:备份完成后自动执行
velero backup describe 检查 Phase 是否为 Completed。
4.8 备份资源关系图
下图展示了备份过程中涉及的组件与数据流向:
通过以上实战,你已经掌握了 Velero 全量备份的完整操作流程。从环境检查、备份创建、状态查看到日志分析,每一步都是后续增量备份和蓝绿发布回滚策略的基础。请务必在测试环境中反复练习,直到能够熟练解读备份日志中的关键信息。