This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.4.4. 备份和恢复
4.4.1. 备份应用程序 复制链接链接已复制到粘贴板!
您可以通过创建一个 Backup 自定义资源 (CR) 来备份应用程序。请参阅创建备份 CR。
Backup CR 为 Kubernetes 资源和内部镜像(S3 对象存储)和持久性卷(PV)创建备份文件,如果云供应商使用原生快照 API 或 Container Storage Interface (CSI) 来创建快照,如 OpenShift Data Foundation 4。
有关 CSI 卷快照的更多信息,请参阅 CSI 卷快照。
S3 存储的 CloudStorage API 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
-
如果您的云供应商有原生快照 API 或支持 CSI 快照,则
BackupCR 通过创建快照来备份持久性卷 (PV)。有关使用 CSI 快照的更多信息,请参阅使用 CSI 快照备份持久性卷。 - 如果您的云供应商不支持快照,或者应用程序位于 NFS 数据卷中,您可以使用 Restic 创建备份。请参阅使用 Restic 备份应用程序。
OpenShift API for Data Protection (OADP) 不支持对由其他软件创建的卷快照进行备份。
您可以创建备份 hook,以便在备份操作之前或之后运行命令。请参阅创建备份 hook。
您可以通过创建一个 Schedule CR 而不是 Backup CR 来调度备份。请参阅调度备份。
4.4.1.1. 创建备份 CR 复制链接链接已复制到粘贴板!
您可以通过创建 Backup 备份自定义资源(CR)来备份 Kubernetes 镜像、内部镜像和持久性卷(PV)。
先决条件
- 您必须安装用于数据保护(OADP)Operator 的 OpenShift API。
-
DataProtectionApplicationCR 必须处于Ready状态。 备份位置先决条件:
- 您必须为 Velero 配置 S3 对象存储。
-
您必须在
DataProtectionApplicationCR 中配置了一个备份位置。
快照位置先决条件:
- 您的云供应商必须具有原生快照 API 或支持 Container Storage Interface(CSI)快照。
-
对于 CSI 快照,您必须创建一个
VolumeSnapshotClassCR 来注册 CSI 驱动程序。 -
您必须在
DataProtectionApplicationCR 中配置了一个卷位置。
流程
输入以下命令来检索
backupStorageLocationsCR:oc get backupStorageLocations
$ oc get backupStorageLocationsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT velero-sample-1 Available 11s 31m
NAME PHASE LAST VALIDATED AGE DEFAULT velero-sample-1 Available 11s 31mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
BackupCR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
BackupCR 的状态是否为Completed:oc get backup -n openshift-adp <backup> -o jsonpath='{.status.phase}'$ oc get backup -n openshift-adp <backup> -o jsonpath='{.status.phase}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.1.2. 使用 CSI 快照备份持久性卷 复制链接链接已复制到粘贴板!
在创建 Backup CR 前,您可以编辑云存储的 VolumeSnapshotClass 自定义资源(CR)来备份持久性卷(CSI)快照。
先决条件
- 云供应商必须支持 CSI 快照。
-
您必须在
DataProtectionApplicationCR 中启用 CSI。
流程
将
metadata.labels.velero.io/csi-volumesnapshot-class: "true"键值对添加到VolumeSnapshotClassCR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您可以创建一个 Backup CR。
4.4.1.3. 使用 Restic 备份应用程序 复制链接链接已复制到粘贴板!
您可以通过编辑备份自定义资源(CR)来使用 Restic Backup 资源、内部镜像和持久性卷备份 Kubernetes 资源。
您不需要在 DataProtectionApplication CR 中指定快照位置。
Restic 不支持备份 hostPath 卷。如需更多信息,请参阅额外的 Rustic 限制。
先决条件
- 您必须安装用于数据保护(OADP)Operator 的 OpenShift API。
-
您不能将
DataProtectionApplicationCR 中的spec.configuration.restic.enable设置为false来禁用默认的 Restic 安装。 -
DataProtectionApplicationCR 必须处于Ready状态。
流程
编辑
BackupCR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
defaultVolumesToRestic: true添加到spec块中。
4.4.1.4. 对 CSI 快照使用 Data Mover 复制链接链接已复制到粘贴板!
CSI 快照的数据仅是一项技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
OADP 1.1.0 数据管理可让客户将容器存储接口 (CSI) 卷快照备份到远程对象存储。启用 Data Mover 时,如果出现问题、意外删除或损坏集群,您可以从存储中恢复有状态的应用程序。OADP 1.1.0 Data Mover 解决方案使用 VolSync 的 Restic 选项。
数据 Mover 支持 CSI 卷快照的备份和恢复。
目前,Data Mover 不支持 Google Cloud Storage (GCS) 存储桶。
先决条件
-
已确认
StorageClass和VolumeSnapshotClass自定义资源 (CR) 支持 CSI。 -
您已确认只有一个
volumeSnapshotClassCR 带有注解snapshot.storage.kubernetes.io/is-default-class: true。 -
已确认只有一个
storageClassCR 带有注解storageclass.kubernetes.io/is-default-class: true。 -
您已在
VolumeSnapshotClassCR 中包含标签velero.io/csi-volumesnapshot-class: 'true'。 已使用 Operator Lifecycle Manager (OLM) 安装 VolSync Operator。
注意VolSync Operator 只需要与技术预览数据一起使用。使用 OADP 的生产环境功能不需要 Operator。
- 已使用 OLM 安装 OADP operator。
流程
通过创建一个
.yaml文件来配置 Restic secret,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意默认情况下,Operator 会查找名为
dm-credential的 secret。如果您使用其他名称,您需要使用dpa.spec.features.dataMover.credentialName通过 Data Protection Application (DPA) CR 指定名称。创建类似以下示例的 DPA CR。默认插件包括 CSI。
数据保护应用程序 (DPA) CR 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加上一步中的 Restic secret 名称。如果没有这样做,则使用默认 secret 名称
dm-credential。
OADP Operator 安装两个自定义资源定义 (CRD)、
VolumeSnapshotBackup和VolumeSnapshotRestore。VolumeSnapshotBackupCRD 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定卷快照所在的命名空间。
VolumeSnapshotRestoreCRD 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以执行以下步骤备份卷快照:
创建备份 CR:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定安装 Operator 的命名空间。默认命名空间是
openshift-adp。
等待 10 分钟,并输入以下命令来检查
VolumeSnapshotBackupCR 状态是否为Completed:oc get vsb -n <app_ns>
$ oc get vsb -n <app_ns>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get vsb <vsb_name> -n <app_ns> -o jsonpath="{.status.phase}"$ oc get vsb <vsb_name> -n <app_ns> -o jsonpath="{.status.phase}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在对象存储中创建快照是在 DPA 中配置。
注意如果
VolumeSnapshotBackupCR 的状态变为Failed,请参阅 Velero 日志进行故障排除。
您可以执行以下步骤来恢复卷快照:
-
删除由 Velero CSI 插件创建的 application 命名空间和
volumeSnapshotContent。 创建
RestoreCR,并将restorePV设置为true。RestoreCR 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待 10 分钟,并通过输入以下命令来检查
VolumeSnapshotRestoreCR 状态是否为Completed:oc get vsr -n <app_ns>
$ oc get vsr -n <app_ns>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get vsr <vsr_name> -n <app_ns> -o jsonpath="{.status.phase}"$ oc get vsr <vsr_name> -n <app_ns> -o jsonpath="{.status.phase}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查您的应用程序数据和资源是否已恢复。
注意如果
VolumeSnapshotRestoreCR 的状态变成 'Failed',请参阅 Velero 日志进行故障排除。
-
删除由 Velero CSI 插件创建的 application 命名空间和
4.4.1.5. 使用带有 OADP 1.1 的 Data Mover 进行备份后清除。 复制链接链接已复制到粘贴板!
对于 OADP 1.1,在使用任何版本的 Data Mover 执行备份后,您必须执行数据清理。
清理过程会删除以下资源:
- 存储桶中的快照
- 集群资源
- 在由一个调度运行或重复运行的备份过程后的卷快照备份 (VSB)
4.4.1.5.1. 删除存储桶中的快照 复制链接链接已复制到粘贴板!
在备份后,数据 Mover 可能会在存储桶中保留一个或多个快照。您可以删除所有快照或删除单个快照。
流程
-
要删除存储桶中的所有快照,请删除在数据保护应用程序(DPA)
.spec.backupLocation.objectStorage.bucket资源中指定的/<protected_namespace>文件夹。 删除单个快照:
-
浏览到在 DPA
.spec.backupLocation.objectStorage.bucket资源中指定的/<protected_namespace>。 -
删除前缀为
/<volumeSnapshotContent name>-pvc的适当文件夹,其中<VolumeSnapshotContent_name>是根据每个 PVC 创建的VolumeSnapshotContent。
-
浏览到在 DPA
4.4.1.5.2. 删除集群资源 复制链接链接已复制到粘贴板!
Data Mover 可能会保留集群资源,无论是否成功备份容器存储接口 (CSI) 卷快照。
4.4.1.5.2.1. 在使用 Data Mover 成功备份和恢复后,删除集群资源 复制链接链接已复制到粘贴板!
您使用 Data Mover 成功备份和恢复后,可以删除保留在您的应用程序命名空间中的 VolumeSnapshotBackup 或 VolumeSnapshotRestore CR。
流程
在使用 Data Mover 备份后,删除位于应用程序命名空间中、带有应用程序 PVC 的命名空间来备份和恢复的集群资源:
oc delete vsb -n <app_namespace> --all
$ oc delete vsb -n <app_namespace> --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除在使用 Data Mover 恢复后保留的集群资源:
oc delete vsr -n <app_namespace> --all
$ oc delete vsr -n <app_namespace> --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果需要,删除使用 Data Mover 备份和恢复后保留的任何
VolumeSnapshotContent资源:oc delete volumesnapshotcontent --all
$ oc delete volumesnapshotcontent --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.1.5.2.2. 在使用 Data Mover 备份部分成功或失败后删除集群资源 复制链接链接已复制到粘贴板!
如果使用 Data Mover 进行的备份和恢复操作部分成功或完全失败,您需要清理应用程序命名空间中存在的任何 VolumeSnapshotBackup (VSB) 或 VolumeSnapshotRestore 自定义资源定义(CRD),并清理这些控制器中创建的任何额外资源。
流程
输入以下命令清理使用 Data Mover 的备份操作后保留的集群资源:
删除应用程序命名空间中的 VSB CRD,带有应用程序 PVC 的命名空间用于备份和恢复:
oc delete vsb -n <app_namespace> --all
$ oc delete vsb -n <app_namespace> --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
VolumeSnapshotCR:oc delete volumesnapshot -A --all
$ oc delete volumesnapshot -A --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
VolumeSnapshotContentCR:oc delete volumesnapshotcontent --all
$ oc delete volumesnapshotcontent --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除受保护的命名空间中的任何 PVC,在其中安装 Operator 的命名空间。
oc delete pvc -n <protected_namespace> --all
$ oc delete pvc -n <protected_namespace> --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除命名空间中的所有
ReplicationSource资源。oc delete replicationsource -n <protected_namespace> --all
$ oc delete replicationsource -n <protected_namespace> --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow
输入以下命令,清理使用 Data Mover 进行的恢复操作后保留的集群资源:
删除 VSR CRD:
oc delete vsr -n <app-ns> --all
$ oc delete vsr -n <app-ns> --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
VolumeSnapshotCR:oc delete volumesnapshot -A --all
$ oc delete volumesnapshot -A --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
VolumeSnapshotContentCR:oc delete volumesnapshotcontent --all
$ oc delete volumesnapshotcontent --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除命名空间中的所有
ReplicationDestination资源。oc delete replicationdestination -n <protected_namespace> --all
$ oc delete replicationdestination -n <protected_namespace> --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.1.6. 创建备份 hook 复制链接链接已复制到粘贴板!
您可以通过编辑备份自定义资源(CR)来创建 Backup hook 以在 pod 中运行的容器中运行命令。
在 pod 备份前运行 Pre hook。在备份后运行 Post hook。
流程
在
BackupCR 的spec.hooks块中添加 hook,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 可选:您可以指定 hook 应用的命名空间。如果没有指定这个值,则 hook 适用于所有命名空间。
- 2
- 可选:您可以指定 hook 不应用到的命名空间。
- 3
- 目前,pod 是唯一可以应用 hook 的支持的资源。
- 4
- 可选:您可以指定 hook 不应用到的资源。
- 5
- 可选:此 hook 仅适用于与标签匹配的对象。如果没有指定这个值,则 hook 适用于所有命名空间。
- 6
- 备份前要运行的 hook 数组。
- 7
- 可选:如果没有指定容器,该命令将在 pod 的第一个容器中运行。
- 8
- 这是正在添加的 init 容器的入口点。
- 9
- 错误处理允许的值是
Fail和Continue。默认值为Fail。 - 10
- 可选:等待命令运行的时间。默认值为
30s。 - 11
- 此块定义了在备份后运行的一组 hook,其参数与 pre-backup hook 相同。
4.4.1.7. 调度备份 复制链接链接已复制到粘贴板!
您可以通过创建 Schedule 自定义资源(CR)而不是 Backup CR 来调度备份。
在您的备份调度中留有足够的时间,以便在创建另一个备份前完成了当前的备份。
例如,如果对一个命名空间进行备份通常需要 10 分钟才能完成,则调度的备份频率不应该超过每 15 分钟一次。
先决条件
- 您必须安装用于数据保护(OADP)Operator 的 OpenShift API。
-
DataProtectionApplicationCR 必须处于Ready状态。
流程
检索
backupStorageLocationsCR:oc get backupStorageLocations
$ oc get backupStorageLocationsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT velero-sample-1 Available 11s 31m
NAME PHASE LAST VALIDATED AGE DEFAULT velero-sample-1 Available 11s 31mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
ScheduleCR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在调度的备份运行后验证
ScheduleCR 的状态是否为Completed:oc get schedule -n openshift-adp <schedule> -o jsonpath='{.status.phase}'$ oc get schedule -n openshift-adp <schedule> -o jsonpath='{.status.phase}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.1.8. 删除备份 复制链接链接已复制到粘贴板!
您可以通过删除 Backup 自定义资源 (CR) 来删除备份文件。
删除 Backup CR 和关联的对象存储数据后,您无法恢复删除的数据。
先决条件
-
您创建了
BackupCR。 -
您知道
BackupCR 的名称以及包含它的命名空间。 - 下载 Velero CLI 工具。
- 您可以访问集群中的 Velero 二进制文件。
流程
选择以下操作之一来删除
BackupCR:要删除
BackupCR 并保留关联的对象存储数据,请运行以下命令:oc delete backup <backup_CR_name> -n <velero_namespace>
$ oc delete backup <backup_CR_name> -n <velero_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要删除
BackupCR 并删除关联的对象存储数据,请运行以下命令:velero backup delete <backup_CR_name> -n <velero_namespace>
$ velero backup delete <backup_CR_name> -n <velero_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
- <backup_CR_name>
-
指定
Backup自定义资源的名称。 - <velero_namespace>
-
指定包含
Backup自定义资源的命名空间。
4.4.2. 恢复应用程序 复制链接链接已复制到粘贴板!
您可以通过创建一个 Restore 自定义资源 (CR) 来恢复应用程序备份。请参阅创建 Restore CR。
您可以创建恢复 hook,以便在 pod 中的容器中运行命令,同时通过编辑 Restore (CR) 恢复应用程序。请参阅创建恢复 hook
4.4.2.1. 创建恢复 CR 复制链接链接已复制到粘贴板!
您可以通过创建一个 Restore CR 来恢复 Backup 自定义资源(CR)。
先决条件
- 您必须安装用于数据保护(OADP)Operator 的 OpenShift API。
-
DataProtectionApplicationCR 必须处于Ready状态。 -
您必须具有 Velero
BackupCR。 - 调整请求的大小,以便持久性卷 (PV) 容量与备份时请求的大小匹配。
流程
创建一个
RestoreCR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令验证
RestoreCR 的状态是否为Completed:oc get restore -n openshift-adp <restore> -o jsonpath='{.status.phase}'$ oc get restore -n openshift-adp <restore> -o jsonpath='{.status.phase}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令验证备份资源是否已恢复:
oc get all -n <namespace>
$ oc get all -n <namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 备份的命名空间。
如果您使用 Restic 恢复
DeploymentConfig对象,或使用 post-restore hook,请输入以下命令运行dc-restic-post-restore.shcleanup 脚本:bash dc-restic-post-restore.sh <restore-name>
$ bash dc-restic-post-restore.sh <restore-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在恢复过程中,OADP Velero 插件会缩减
DeploymentConfig对象,并将 pod 恢复为独立 pod,以防止集群在恢复时立即删除恢复的DeploymentConfigpod,并允许 Restic 和 post-restore hook 在恢复的 pod 上完成其操作。清理脚本会删除这些断开连接的 pod,并将任何DeploymentConfig对象扩展至适当的副本数。例 4.1.
dc-restic-post-restore.shcleanup 脚本Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.2.2. 创建恢复 hook 复制链接链接已复制到粘贴板!
您可以创建恢复 hook,以便在 pod 中运行的容器运行命令,同时通过编辑 Restore 自定义资源(CR)恢复应用程序。
您可以创建两种类型的恢复 hook:
inithook 将 init 容器添加到 pod,以便在应用程序容器启动前执行设置任务。如果您恢复 Restic 备份,则会在恢复 hook init 容器前添加
restic-waitinit 容器。-
exechook 在恢复的 pod 的容器中运行命令或脚本。
流程
在
RestoreCR 的spec.hooks块中添加 hook,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 可选: hook 应用的命名空间数组。如果没有指定这个值,则 hook 适用于所有命名空间。
- 2
- 目前,pod 是唯一可以应用 hook 的支持的资源。
- 3
- 可选:此 hook 仅适用于与标签选择器匹配的对象。
- 4
- 可选:超时指定了 Velero 等待
initContainers完成的最大时间长度。 - 5
- 可选:如果没有指定容器,该命令将在 pod 的第一个容器中运行。
- 6
- 这是正在添加的 init 容器的入口点。
- 7
- 可选:等待容器就绪的时间。这应该足够长,以便容器可以启动,在相同容器中的任何以前的 hook 可以完成。如果没有设置,恢复过程会无限期等待。
- 8
- 可选:等待命令运行的时间。默认值为
30s。 - 9
- 错误处理的允许值为
Fail和Continue:-
Continue: 只记录命令失败。 -
Fail: 任何 pod 中的任何容器中没有更多恢复 hook 运行。RestoreCR 的状态将是PartiallyFailed。
-