4.6. OADP 备份
4.6.1. 备份应用程序 复制链接链接已复制到粘贴板!
您可以通过创建一个 Backup
自定义资源 (CR) 来备份应用程序。请参阅创建备份 CR。
-
Backup
CR 为 Kubernetes 资源和 S3 对象存储上的内部镜像创建备份文件。 -
如果您的云供应商有原生快照 API 或支持 CSI 快照,则
Backup
CR 通过创建快照来备份持久性卷 (PV)。有关使用 CSI 快照的更多信息,请参阅使用 CSI 快照备份持久性卷。
有关 CSI 卷快照的更多信息,请参阅 CSI 卷快照。
S3 存储的 CloudStorage
API 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
- 如果您的云供应商不支持快照,或者应用程序位于 NFS 数据卷中,您可以使用 Kopia 或 Restic 创建备份。请参阅使用文件系统备份备份应用程序:Kopia 或 Restic。
…/.snapshot: read-only file system
错误
…/.snapshot
目录是一个快照复制目录,由多个 NFS 服务器使用。该目录默认具有只读访问权限,因此 Velero 无法恢复到这个目录中。
不要向 Velero 提供对 .snapshot
目录的写入权限,并禁用客户端对这个目录的访问。
OpenShift API for Data Protection (OADP) 不支持对由其他软件创建的卷快照进行备份。
您可以创建备份 hook,以便在备份操作之前或之后运行命令。请参阅创建备份 hook。
您可以通过创建一个 Schedule
CR 而不是 Backup
CR 来调度备份。请参阅使用 Schedule CR] 调度备份。
4.6.1.1. 已知问题 复制链接链接已复制到粘贴板!
OpenShift Container Platform 4.14 强制执行一个 pod 安全准入 (PSA) 策略,该策略可能会在 Restic 恢复过程中阻止 pod 的就绪度。
这个问题已在 OADP 1.1.6 和 OADP 1.2.2 版本中解决,因此建议用户升级到这些版本。
如需更多信息,请参阅因为更改 PSA 策略,在 OCP 4.14 上进行 Restic 恢复部分失败。
4.6.2. 创建备份 CR 复制链接链接已复制到粘贴板!
您可以通过创建 Backup
自定义资源(CR)来备份 Kubernetes 资源、内部镜像和持久性卷(PV)。
先决条件
- 您必须安装用于数据保护(OADP)Operator 的 OpenShift API。
-
DataProtectionApplication
CR 必须处于Ready
状态。 备份位置先决条件:
- 您必须为 Velero 配置 S3 对象存储。
-
您必须在
DataProtectionApplication
CR 中配置了一个备份位置。
快照位置先决条件:
- 您的云供应商必须具有原生快照 API 或支持 Container Storage Interface(CSI)快照。
-
对于 CSI 快照,您必须创建一个
VolumeSnapshotClass
CR 来注册 CSI 驱动程序。 -
您必须在
DataProtectionApplication
CR 中配置了一个卷位置。
流程
输入以下命令来检索
backupStorageLocations
CR:oc get backupStorageLocations -n openshift-adp
$ oc get backupStorageLocations -n openshift-adp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME PHASE LAST VALIDATED AGE DEFAULT openshift-adp velero-sample-1 Available 11s 31m
NAMESPACE NAME PHASE LAST VALIDATED AGE DEFAULT openshift-adp velero-sample-1 Available 11s 31m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
Backup
CR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
Backup
CR 的状态是否为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.6.3. 使用 CSI 快照备份持久性卷 复制链接链接已复制到粘贴板!
在创建 Backup
CR 前,您可以编辑云存储的 VolumeSnapshotClass
自定义资源(CR) 来使用 Container Storage Interface (CSI) 快照备份持久性卷,请参阅 CSI 卷快照。
如需更多信息,请参阅创建备份 CR。
先决条件
- 云供应商必须支持 CSI 快照。
-
您必须在
DataProtectionApplication
CR 中启用 CSI。
流程
将
metadata.labels.velero.io/csi-volumesnapshot-class: "true"
键值对添加到VolumeSnapshotClass
CR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您可以创建一个 Backup
CR。
4.6.4. 使用文件系统备份对应用程序进行备份:Kopia 或 Restic 复制链接链接已复制到粘贴板!
您可以使用 OADP 从卷的文件系统备份和恢复附加到 pod 的 Kubernetes 卷。这个过程称为文件系统备份 (FSB) 或 Pod 卷备份 (PVB)。它通过使用来自开源备份工具 Restic 或 Kopia 的模块来完成。
如果您的云供应商不支持快照,或者应用程序位于 NFS 数据卷中,您可以使用 FSB 创建备份。
FSB 与 OADP 集成提供了一种解决方案,用于备份和恢复几乎任何类型的 Kubernetes 卷。这个集成是 OADP 的一个额外功能,不是现有功能的替代品。
您可以通过编辑 Backup
备份自定义资源 (CR) 来使用 Kopia 或 Restic 对 Kubernetes 资源、内部镜像和持久性卷备份。
您不需要在 DataProtectionApplication
CR 中指定快照位置。
在 OADP 版本 1.3 及更高版本中,您可以使用 Kopia 或 Restic 备份应用程序。
对于 Built-in DataMover,您必须使用 Kopia。
在 OADP 版本 1.2 及更早版本中,您只能使用 Restic 备份应用程序。
FSB 不支持对 hostPath
卷进行备份。如需更多信息,请参阅 FSB 限制。
…/.snapshot: read-only file system
错误
…/.snapshot
目录是一个快照复制目录,由多个 NFS 服务器使用。该目录默认具有只读访问权限,因此 Velero 无法恢复到这个目录中。
不要向 Velero 提供对 .snapshot
目录的写入权限,并禁用客户端对这个目录的访问。
先决条件
- 您必须安装用于数据保护(OADP)Operator 的 OpenShift API。
-
您不能通过将
DataProtectionApplication
CR 中的spec.configuration.nodeAgent.enable
tofalse
来禁用默认的nodeAgent
安装。 -
您必须在
DataProtectionApplication
CR 中将spec.configuration.nodeAgent.uploaderType
设置为kopia
或restic
来选择 Kopia 或 Restic 作为 uploader。 -
DataProtectionApplication
CR 必须处于Ready
状态。
流程
创建
Backup
CR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在 OADP 版本 1.2 及更高版本中,在
spec
块中添加defaultVolumesToFsBackup: true
设置。在 OADP 版本 1.1 中,添加defaultVolumesToRestic: true
。
4.6.5. 创建备份 hook 复制链接链接已复制到粘贴板!
在执行备份时,可以根据正在备份的 pod,指定在 pod 内要执行的一个或多个命令。
可将命令配置为在任何自定义操作处理(Pre hook)或所有自定义操作完成后执行,且由自定义操作指定的任何其他项目都已备份(Post hook)。
您可以通过编辑备份自定义资源(CR)来创建 Backup
hook 以在 pod 中运行的容器中运行命令。
流程
在
Backup
CR 的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.6.6. 使用 Schedule CR 调度备份 复制链接链接已复制到粘贴板!
调度操作允许您在特定时间创建由 Cron 表达式指定的数据的备份。
您可以通过创建 Schedule
自定义资源(CR)而不是 Backup
CR 来调度备份。
在您的备份调度中留有足够的时间,以便在创建另一个备份前完成了当前的备份。
例如,如果对一个命名空间进行备份通常需要 10 分钟才能完成,则调度的备份频率不应该超过每 15 分钟一次。
先决条件
- 您必须安装用于数据保护(OADP)Operator 的 OpenShift API。
-
DataProtectionApplication
CR 必须处于Ready
状态。
流程
检索
backupStorageLocations
CR:oc get backupStorageLocations -n openshift-adp
$ oc get backupStorageLocations -n openshift-adp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME PHASE LAST VALIDATED AGE DEFAULT openshift-adp velero-sample-1 Available 11s 31m
NAMESPACE NAME PHASE LAST VALIDATED AGE DEFAULT openshift-adp velero-sample-1 Available 11s 31m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
Schedule
CR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 1
- 调度备份的
cron
表达式,例如0 7 * * *
代表在每天 7:00 执行备份。注意要以特定间隔调度备份,以以下格式输入
<duration_in_minutes>
:schedule: "*/10 * * * *"
schedule: "*/10 * * * *"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在引号 (
" "
) 之间输入分钟值。 - 2
- 要备份的命名空间数组。
- 3
backupStorageLocations
CR 的名称。- 4
- 可选:在 OADP 版本 1.2 及更高版本中,在使用 Restic 进行卷备份时,将
defaultVolumesToFsBackup: true
键值对添加到您的配置中。在 OADP 版本 1.1 中,在使用 Restic 备份卷时添加defaultVolumesToRestic: true
键值对。在调度的备份运行后验证
Schedule
CR 的状态是否为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.6.7. 删除备份 复制链接链接已复制到粘贴板!
您可以通过删除 Backup
自定义资源 (CR) 来删除备份文件。
删除 Backup
CR 和关联的对象存储数据后,您无法恢复删除的数据。
先决条件
-
您创建了
Backup
CR。 -
您知道
Backup
CR 的名称以及包含它的命名空间。 - 下载 Velero CLI 工具。
- 您可以访问集群中的 Velero 二进制文件。
流程
选择以下操作之一来删除
Backup
CR:要删除
Backup
CR 并保留关联的对象存储数据,请运行以下命令: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 要删除
Backup
CR 并删除关联的对象存储数据,请运行以下命令: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.6.8. 关于 Kopia 复制链接链接已复制到粘贴板!
Kopia 是一个快速安全的开源备份和恢复工具,可让您创建数据的加密快照,并将快照保存到您选择的远程或云存储中。
Kopia 支持网络和本地存储位置,以及许多云或远程存储位置,包括:
- Amazon S3 以及与 S3 兼容的任何云存储
- Azure Blob Storage
- Google Cloud Storage 平台
Kopia 对快照使用可内容访问的存储:
- 快照始终是以增量方式进行的;已包含在之前快照中的数据不会重新上传到存储库。仅当文件被修改时,文件才会再次上传到存储库。
- 存储的数据会被去除重复数据;如果存在同一文件的多个副本,则仅存储其中一个文件。
- 如果文件被移动或重命名,Kopia 可以识别它们具有相同的内容,且不会重新上传它们。
4.6.8.1. OADP 与 Kopia 集成 复制链接链接已复制到粘贴板!
除了 Restic 外,OADP 1.3 还支持 Kopia 作为 pod 卷备份的备份机制。您需要在安装时通过在 DataProtectionApplication
自定义资源(CR) 中设置 uploaderType
字段来选择其中一个。可能的值为 restic
或 kopia
。如果没有指定 uploaderType
,OADP 1.3 默认为使用 Kopia 作为备份机制。数据会从一个统一的存储库中读取或写入。
以下示例显示了配置了使用 Kopia 的 DataProtectionApplication
CR: