使用 Velero 备份和恢复 TopoLVM 文件系统 PVC

Velero 支持对 TopoLVM 文件系统的 Persistent Volume Claims(PVC)和 Persistent Volumes(PV)进行备份和恢复。此功能已集成到平台中。

本指南专门针对 TopoLVM 文件系统的 PVC。

前提条件

  1. 通过 Marketplace/Cluster Plugins 部署“Alauda Container Platform Data Backup for Velero”。
  2. 为 Velero 的 BackupStorageLocation 配置一个兼容 S3 的存储。可使用平台提供的 Ceph 或 MinIO 对象存储。

限制

  1. S3 存储必须有足够的剩余空间以存储目标集群中所有 PV 的数据。
  2. 恢复时,命名空间配额和存储类必须支持所有 PVC 的总容量。

操作步骤

第 1 步:配置备份仓库

  1. 确保已有兼容 S3 的存储可用。
  2. 进入 管理员 > 集群管理 > 备份与恢复 > 备份仓库
  3. 使用对象存储的凭据创建备份仓库。

第 2 步:执行备份

  1. 给需要备份的 PVC 和相关 Pod 添加标签:

    Velero 需要一个 Pod 来恢复文件系统 PVC。该 Pod 挂载 PVC,Velero 通过它导入数据;如果没有 Pod,PVC 会一直处于 Pending 状态。对于复杂应用,建议暂停应用,将 PVC 挂载到轻量级 Pod(如 Nginx)上进行备份/恢复,恢复完成后再恢复原应用配置。

    kubectl label pvc -n <namespace> <pvc-name> velero-backup=true
    kubectl label pod -n <namespace> <pod-name> velero-backup=true
  2. 进入 备份与恢复,创建新的备份任务:

    • 选择 备份 Kubernetes 资源和 PVC 数据卷

    • 选择包含需要备份数据的命名空间。

    • 按照以下配置设置备份:

      apiVersion: velero.io/v1
      kind: Schedule
      metadata:
        name: <backup-name>
        namespace: cpaas-system
        annotations:
          cpaas.io/description: ''
      spec:
        template:
          includedNamespaces:
            - <namespace>
          includedResources:
            - '*'
          labelSelector:
            matchLabels:
              velero-backup: 'true'
          excludedNamespaces: []
          excludedResources: []
          defaultVolumesToFsBackup: true
          storageLocation: default
          ttl: 720h
        schedule: '@every 876000h'
        skipImmediately: false
      status:
        phase: Enabled
  3. 备份完成后,验证 S3 存储桶(如 MinIO)中的数据:

    mc ls <minio-alias>/<bucket-name>/<backup-path>/<namespace>/

    示例输出:

    [2025-03-14 00:18:33 CST]  155B STANDARD config
    [2025-03-14 09:04:56 CST]   0B data/
    [2025-03-14 09:04:56 CST]   0B index/
    [2025-03-14 09:04:56 CST]   0B keys/
    [2025-03-14 09:04:56 CST]   0B snapshots/

第 3 步:恢复集群

  1. 在目标集群中配置与备份时相同的 S3 存储桶,Velero 会自动识别已有备份。
  2. 进入 备份与恢复,创建恢复任务:
    • 选择需要恢复的命名空间。
    • 在高级配置中,如有需要,将原命名空间映射到目标命名空间。
  3. 执行恢复操作。
  4. 恢复完成后,确认:
    • PVC 名称与原集群一致。
    • PVC 中的应用数据完整且可访问。