4.13. 使用 OpenShift Virtualization 配置 OADP
4.13.1. 为 OpenShift Virtualization 的数据保护配置 OpenShift API
您可以通过安装 OADP Operator 并配置备份位置,使用 OpenShift Virtualization 安装 OpenShift API for Data Protection (OADP)。然后,您可以安装数据保护应用程序。
使用 OpenShift API for Data Protection 来备份和恢复虚拟机。
OpenShift API for Data Protection with OpenShift Virtualization 支持以下备份和恢复存储选项:
- 容器存储接口 (CSI) 备份
- 使用 DataMover 进行容器存储接口 (CSI) 备份
排除以下存储选项:
- 文件系统备份和恢复
- 卷快照备份和恢复
如需更多信息,请参阅使用文件系统备份备份应用程序: Kopia 或 Restic。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.13.1.1. 使用 OpenShift Virtualization 安装和配置 OADP
作为集群管理员,您可以通过安装 OADP Operator 来安装 OADP。
OADP Operator 的最新版本会安装 Velero 1.14。
先决条件
- 
								使用具有 cluster-admin角色的用户访问集群。
流程
- 根据您的存储供应商说明安装 OADP Operator。
- 
								使用 kubevirt和openshiftOADP 插件安装数据保护应用程序(DPA)。
- 通过创建 - Backup自定义资源(CR) 来备份虚拟机。警告- 红帽支持仅限于以下选项: - CSI 备份
- 使用 DataMover 的 CSI 备份。
 
						您可以通过创建一个 Restore CR来恢复 Backup CR。
					
4.13.1.2. 安装数据保护应用程序
						您可以通过创建 DataProtectionApplication API 的实例来安装数据保护应用程序(DPA)。
					
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
- 
								如果备份和快照位置使用相同的凭证,您必须创建带有默认名称 cloud-credentials的Secret。
- 如果备份和快照位置使用不同的凭证,您必须创建两个 - Secret:- 
										带有备份位置的自定义名称的 secret。您可以将此Secret添加到DataProtectionApplicationCR 中。
- 
										带有快照位置的另一个自定义名称的 Secret。您可以将此Secret添加到DataProtectionApplicationCR 中。
 注意- 如果您不想在安装过程中指定备份或快照位置,您可以使用空 - credentials-velero文件创建默认- Secret。如果没有默认- Secret,安装将失败。
- 
										带有备份位置的自定义名称的 
流程
- 
								点 Operators Installed Operators 并选择 OADP Operator。 
- 在 Provided APIs 下,点 DataProtectionApplication 框中的 Create 实例。
- 点 YAML View 并更新 - DataProtectionApplication清单的参数:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- OADP 的默认命名空间是openshift-adp。命名空间是一个变量,可配置。
- 2
- OpenShift Virtualization 需要kubevirt插件。
- 3
- 为备份供应商指定插件,如gcp(如果存在)。
- 4
- 5
- openshift插件是必需的。
- 6
- 指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
- 7
- 将管理请求路由到服务器的管理代理。
- 8
- 如果要启用nodeAgent并执行文件系统备份,则将此值设置为true。
- 9
- 输入kopia作为您的上传程序,以使用 Built-in DataMover。nodeAgent部署守护进程集,这意味着nodeAgentpod 在每个工作节点上运行。您可以通过在BackupCR 中添加spec.defaultVolumesToFsBackup: true来配置文件系统备份。
- 10
- 指定 Kopia 可用的节点。默认情况下,Kopia 在所有节点上运行。
- 11
- 指定备份供应商。
- 12
- 如果备份供应商使用一个默认插件,为Secret指定正确的默认名称,如cloud-credentials-gcp。如果指定了一个自定义名称,则使用自定义名称用于备份位置。如果没有指定Secret名称,则使用默认名称。
- 13
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 14
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如velero。
 
- 点 Create。
验证
- 运行以下命令,查看 OpenShift API for Data Protection (OADP) 资源来验证安装: - oc get all -n openshift-adp - $ oc get all -n openshift-adp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,验证 - DataProtectionApplication(DPA) 是否已协调:- oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'- $ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - {"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}- {"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
								验证 type被设置为Reconciled。
- 运行以下命令,验证备份存储位置并确认 - PHASE为- Available:- oc get backupstoragelocations.velero.io -n openshift-adp - $ oc get backupstoragelocations.velero.io -n openshift-adp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true - NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
							如果您在虚拟机重启后马上运行 Microsoft Windows 虚拟机(VM)备份,备份可能会失败,并显示 PartiallyFailed 错误。这是因为,在虚拟机启动后,Microsoft Windows Volume Shadow Copy Service (VSS)和客户机代理(GA)服务未就绪。VSS 和 GA 服务未就绪会导致备份失败。在这种情况下,在虚拟机启动后几分钟后重试备份。
						
4.13.1.3. 备份单个虚拟机
						如果您的命名空间具有多个虚拟机(VM),并且只想备份其中之一,您可以使用标签选择器过滤备份中需要包含的虚拟机。您可以使用 app: vmname 标签过滤虚拟机。
					
先决条件
- 已安装 OADP Operator。
- 在命名空间中运行了多个虚拟机。
- 
								您已在 DataProtectionApplication(DPA) 自定义资源(CR)中添加了kubevirt插件。
- 
								您已在 DataProtectionApplicationCR 和BackupStorageLocation中配置了BackupStorageLocationCR。
流程
- 配置 - BackupCR,如下例所示:- BackupCR 示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 要创建 - BackupCR,请运行以下命令:- oc apply -f <backup_cr_file_name> - $ oc apply -f <backup_cr_file_name>- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定BackupCR 文件的名称。
 
4.13.1.4. 恢复单个虚拟机
						使用 Backup 自定义资源(CR)中的标签选择器备份单个虚拟机(VM)后,您可以创建一个 Restore CR 并将其指向备份。此恢复操作会恢复单个虚拟机。
					
先决条件
- 已安装 OADP Operator。
- 已使用标签选择器备份单个虚拟机。
4.13.1.5. 从多个虚拟机的备份中恢复单个虚拟机
						如果您有包含多个虚拟机(VM)的备份,且只想恢复一个虚拟机,您可以使用 Restore CR 中的 LabelSelectors 部分来选择要恢复的虚拟机。为确保附加到虚拟机的持久性卷声明(PVC)已被正确恢复,恢复的虚拟机不会处于 Provisioning 状态,请使用 app: <vm_name> 和 kubevirt.io/created-by 标签。要匹配 kubevirt.io/created-by 标签,请使用虚拟机的 DataVolume 的 UID。
					
先决条件
- 已安装 OADP Operator。
- 您已标记了需要备份的虚拟机。
- 您有多个虚拟机的备份。
流程
- 在备份多个虚拟机前,运行以下命令确保虚拟机已标记: - oc label vm <vm_name> app=<vm_name> -n openshift-adp - $ oc label vm <vm_name> app=<vm_name> -n openshift-adp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在 - RestoreCR 中配置标签选择器,如下例所示:- RestoreCR 示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 要恢复虚拟机,请运行以下命令: - oc apply -f <restore_cr_file_name> - $ oc apply -f <restore_cr_file_name>- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定RestoreCR 文件的名称。
 
4.13.1.6. 使用客户端 burst 和 QPS 设置配置 DPA
						burst 设置决定在应用限制前可以发送到 velero 服务器的请求数量。达到 burst 限制后,查询每秒 (QPS) 设置决定了每秒可以发送多少个额外请求。
					
						您可以使用 burst 和 QPS 值配置数据保护应用程序 (DPA) 来设置 velero 服务器的 burst 和 QPS 值。您可以使用 DPA 的 dpa.configuration.velero.client-burst 和 dpa.configuration.velero.client-qps 字段来设置 burst 和 QPS 值。
					
先决条件
- 已安装 OADP Operator。
4.13.1.7. 覆盖 DPA 中的 imagePullPolicy 设置
						在 OADP 1.4.0 或更早版本中,Operator 会将 Velero 和节点代理 pod 的 imagePullPolicy 字段设置为 Always。
					
						在 OADP 1.4.1 或更高版本中,Operator 首先检查每个镜像是否有 sha256 或 sha512 摘要,并相应地设置 imagePullPolicy 字段:
					
- 
								如果镜像有摘要,Operator 会将 imagePullPolicy设置为IfNotPresent。
- 
								如果镜像没有摘要,Operator 会将 imagePullPolicy设置为Always。
						您还可以使用 Data Protection Application (DPA)中的 spec.imagePullPolicy 字段覆盖 imagePullPolicy 字段。
					
先决条件
- 已安装 OADP Operator。
流程
- 在 DPA 中配置 - spec.imagePullPolicy字段,如下例所示:- 数据保护应用程序示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定imagePullPolicy的值。在本例中,imagePullPolicy字段设置为Never。
 
4.13.1.7.1. 配置节点代理和节点标签
							OADP 的 DPA 使用 nodeSelector 字段来选择哪些节点可以运行节点代理。nodeSelector 字段是节点选择限制的最简单的形式。
						
任何指定的标签都需要与每个节点上的标签匹配。
在您选择的任何节点上运行节点代理的正确方法是使用自定义标签标记节点:
oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
							在 DPA.spec.configuration.nodeAgent.podConfig.nodeSelector 中使用相同的自定义标签,用于标记节点。例如:
						
							以下示例是 nodeSelector 的反模式,除非标签 'node-role.kubernetes.io/infra: ""' 和 'node-role.kubernetes.io/worker: ""' 都位于节点上,否则无法工作:
						
4.13.1.8. 关于增量备份支持
						OADP 支持对容器化和 OpenShift Virtualization 工作负载进行块和文件系统持久性卷的增量备份。下表总结了对文件系统备份 (FSB)、Container Storage Interface (CSI) 和 CSI Data Mover 的支持:
					
| 卷模式 | FSB - Restic | FSB - Kopia | CSI | CSI Data Mover | 
|---|---|---|---|---|
| Filesystem | S [1], I [2] | S [1], I [2] | S [1] | S [1], I [2] | 
| Block | N [3] | N [3] | S [1] | S [1], I [2] | 
| 卷模式 | FSB - Restic | FSB - Kopia | CSI | CSI Data Mover | 
|---|---|---|---|---|
| Filesystem | N [3] | N [3] | S [1] | S [1], I [2] | 
| Block | N [3] | N [3] | S [1] | S [1], I [2] | 
- 支持的备份
- 支持的增量备份
- 不支持
							CSI Data Mover 备份使用 Kopia,无论 uploaderType 是什么。
						
红帽只支持 OADP 版本 1.3.0 及更新的版本,以及 OpenShift Virtualization 版本 4.14 及更新的版本。
在 1.3.0 前 OADP 版本不支持备份和恢复 OpenShift Virtualization。