4.12. 使用 ODF 配置 OADP
您可以通过安装 OADP Operator 并配置备份位置和快照位置,在 OpenShift Data Foundation 中安装 OpenShift API for Data Protection (OADP)。然后,您要安装数据保护应用程序。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作 Migration Toolkit for Containers Operator 的依赖项,且不能作为独立 Operator 提供。
您可以将 Multicloud 对象网关 或任何 AWS S3 兼容对象存储配置为备份位置。
CloudStorage API(它自动为对象存储创建一个存储桶)只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
为备份位置创建一个 Secret,然后安装数据保护应用程序。如需了解更多详细信息,请参阅安装 OADP Operator。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.12.1.1. 关于备份和恢复位置及其 secret 复制链接链接已复制到粘贴板!
您可以在 DataProtectionApplication 自定义资源(CR)中指定备份和快照位置及其 secret。
备份位置
您可以将 AWS S3 兼容对象存储指定为备份位置,如 Multicloud Object Gateway;Red Hat Container Storage;Ceph RADOS 网关,也称为 Ceph 对象网关;Red Hat OpenShift Data Foundation;或 MinIO。
Velero 将 OpenShift Container Platform 资源、Kubernetes 对象和内部镜像备份为对象存储上的存档文件。
快照位置
如果使用云供应商的原生快照 API 备份持久性卷,您必须将云供应商指定为快照位置。
如果使用 Container Storage Interface(CSI)快照,则不需要指定快照位置,因为您要创建一个 VolumeSnapshotClass CR 来注册 CSI 驱动程序。
如果您使用文件系统备份 (FSB),则不需要指定快照位置,因为 FSB 在对象存储上备份文件系统。
Secrets
如果备份和快照位置使用相同的凭证,或者不需要快照位置,请创建一个默认 Secret。
如果备份和恢复位置使用不同的凭证,您可以创建两个 secret 对象:
-
您在
DataProtectionApplicationCR 中指定的备份位置的自定义Secret。 -
快照位置的默认
Secret,在DataProtectionApplicationCR 中没有引用。
数据保护应用程序需要一个默认的 Secret。否则,安装将失败。
如果您不想在安装过程中指定备份或快照位置,您可以使用空 credentials-velero 文件创建默认 Secret。
4.12.1.1.1. 创建默认 Secret 复制链接链接已复制到粘贴板!
如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret。
Secret 的默认名称为 cloud-credentials,除非备份存储供应商有一个默认插件,如 aws、azure 或 gcp。在这种情况下,默认名称是在特定于供应商的 OADP 安装过程中指定。
DataProtectionApplication 自定义资源(CR)需要一个默认的 Secret。否则,安装将失败。如果没有指定备份位置 Secret 的名称,则会使用默认名称。
如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero 文件创建带有默认名称的 Secret。
先决条件
- 您的对象存储和云存储(若有)必须使用相同的凭证。
- 您必须为 Velero 配置对象存储。
流程
为您的云供应商为备份存储位置创建一个
credentials-velero文件。请参见以下示例:
[default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
[default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用默认名称创建
Secret自定义资源 (CR):oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow
在安装 Data Protection Application 时,secret 会在 DataProtectionApplication CR 的 spec.backupLocations.credential 块中引用。
4.12.1.1.2. 为不同凭证创建 secret 复制链接链接已复制到粘贴板!
如果您的备份和恢复位置使用不同的凭证,您必须创建两个 Secret 对象:
-
具有自定义名称的备份位置
Secret。自定义名称在DataProtectionApplication自定义资源(CR)的spec.backupLocations块中指定。 -
带有默认名称
cloud-credentials的快照位置Secret。此Secret不在DataProtectionApplicationCR 中指定。
流程
-
为您的云供应商为快照位置创建一个
credentials-velero文件。 使用默认名称为快照位置创建
Secret:oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
为您的对象存储创建一个用于备份位置的
credentials-velero文件。 使用自定义名称为备份位置创建
Secret:oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将带有自定义名称的
Secret添加到DataProtectionApplicationCR 中,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 具有自定义名称的备份位置
Secret。
4.12.1.2. 配置数据保护应用程序 复制链接链接已复制到粘贴板!
您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。
4.12.1.2.1. 设置 Velero CPU 和内存分配 复制链接链接已复制到粘贴板!
您可以通过编辑 DataProtectionApplication 自定义资源(CR)清单来为 Velero pod 设置 CPU 和内存分配。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplicationCR 清单的spec.configuration.velero.podConfig.ResourceAllocations块中的值,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Kopia 是 OADP 1.3 及之后的版本中的一个选项。您可以使用 Kopia 进行文件系统备份,Kopia 是 Data Mover 的唯一选择,并带有内置数据 Mover。
和 Restic 相比,Kopia 需要更多资源,您可能需要相应地调整 CPU 和内存要求。
使用 nodeSelector 字段选择哪些节点可以运行节点代理。nodeSelector 字段是节点选择限制的最简单的形式。任何指定的标签都需要与每个节点上的标签匹配。
如需了解更多详细信息,请参阅配置节点代理和节点标签。
4.12.1.2.1.1. 根据收集的数据调整 Ceph CPU 和内存要求 复制链接链接已复制到粘贴板!
以下建议基于在扩展和性能实验室中观察到的性能。更改与 {odf-first} 相关。如果使用 {odf-short},请参阅相关的调优指南来了解官方的建议。
4.12.1.2.1.1.1. 配置的 CPU 和内存要求 复制链接链接已复制到粘贴板!
备份和恢复操作需要大量 CephFS PersistentVolume (PV)。为了避免 Ceph MDS pod 重启并带有 out-of-memory (OOM) 错误,建议以下配置:
| 配置类型 | Request(请求) | 最大限制 |
|---|---|---|
| CPU | 请求改为 3 | 最大限制为 3 |
| 内存 | 请求改为 8 Gi | 最大限制为 128 Gi |
4.12.1.2.2. 启用自签名 CA 证书 复制链接链接已复制到粘贴板!
您必须通过编辑 DataProtectionApplication 自定义资源(CR)清单来为对象存储启用自签名 CA 证书,以防止由未知颁发机构签名的证书。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplicationCR 清单的spec.backupLocations.velero.objectStorage.caCert参数和spec.backupLocations.velero.config参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.12.1.2.2.1. 使用带有用于 velero 部署的 velero 命令的 CA 证书 复制链接链接已复制到粘贴板!
如果您望使用 Velero CLI 而又不想在您的系统中安装它,可以为它创建一个别名。
先决条件
-
您必须使用具有
cluster-admin角色的用户登录到 OpenShift Container Platform 集群。 已安装 OpenShift CLI (
oc)。要使用别名的 Velero 命令,请运行以下命令:
alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查别名是否正常工作:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用这个命令来使用 CA 证书,您可以运行以下命令在 Velero 部署中添加证书:
CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}') [[ -n $CA_CERT ]] && echo "$CA_CERT" | base64 -d | oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "cat > /tmp/your-cacert.txt" || echo "DPA BSL has no caCert"$ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}') $ [[ -n $CA_CERT ]] && echo "$CA_CERT" | base64 -d | oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "cat > /tmp/your-cacert.txt" || echo "DPA BSL has no caCert"Copy to Clipboard Copied! Toggle word wrap Toggle overflow velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
$ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要获取备份日志,请运行以下命令:
velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>
$ velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用这些日志来查看无法备份的资源的失败和警告。
-
如果 Velero pod 重启,
/tmp/your-cacert.txt文件会消失,您需要通过重新运行上一步中的命令来重新创建/tmp/your-cacert.txt文件。 您可以运行以下命令来检查
/tmp/your-cacert.txt文件是否存在(在存储它的文件位置中):oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "ls /tmp/your-cacert.txt"
$ oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "ls /tmp/your-cacert.txt" /tmp/your-cacert.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow
在以后的 OpenShift API for Data Protection (OADP) 发行版本中,我们计划将证书挂载到 Velero pod,以便不需要这一步。
4.12.1.3. 安装数据保护应用程序 复制链接链接已复制到粘贴板!
您可以通过创建 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
- 需要与您的存储位置对应的对象存储插件。对于所有 S3 供应商,所需的插件都是
aws。对于 Azure 和 Google Cloud 对象存储,需要azure或gcp插件。 - 3
- 可选:
kubevirt插件用于 OpenShift Virtualization。 - 4
- 5
openshift插件是必需的。- 6
- 指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
- 7
- 将管理请求路由到服务器的管理代理。
- 8
- 如果要启用
nodeAgent并执行文件系统备份,则将此值设置为true。 - 9
- 输入
kopia或restic作为您的上传者。您不能在安装后更改选择。对于 Built-in DataMover,您必须使用 Kopia。nodeAgent部署守护进程集,这意味着nodeAgentpod 在每个工作节点上运行。您可以通过在BackupCR 中添加spec.defaultVolumesToFsBackup: true来配置文件系统备份。 - 10
- 指定 Kopia 或 Restic 可用的节点。默认情况下,Kopia 或 Restic 在所有节点上运行。
- 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-adpCopy 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-adpCopy 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 trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.12.1.4. 使用客户端 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。
流程
在 DPA 中配置
client-burst和client-qps字段,如下例所示:数据保护应用程序示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.12.1.4.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: ""' 都位于节点上,否则无法工作:
如果您在 OpenShift Data Foundation 上将集群存储用于 Multicloud 对象网关 (MCG) 存储桶 backupStorageLocation,请使用 OpenShift Web 控制台创建一个对象 Bucket 声明 (OBC)。
未能配置对象 Bucket 声明 (OBC) 可能会导致备份不可用。
除非另有指定,"NooBaa" 指的是提供轻量级对象存储的开源项目,而 "Multicloud Object Gateway (MCG) " 是指 NooBaa 的红帽发行版本。
如需有关 MCG 的更多信息,请参阅使用应用程序访问多云对象网关。
流程
- 使用 OpenShift Web 控制台创建对象 Bucket 声明 (OBC),如使用 OpenShift Web 控制台创建对象 Bucket 声明中所述。
4.12.1.4.3. 在 DataProtectionApplication CR 中启用 CSI 复制链接链接已复制到粘贴板!
您可以在 DataProtectionApplication 自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
流程
编辑
DataProtectionApplicationCR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加
csi默认插件。
4.12.1.4.4. 在 DataProtectionApplication 中禁用节点代理 复制链接链接已复制到粘贴板!
如果您没有在备份中使用 Restic、Kopia 或 DataMover,您可以在 DataProtectionApplication 自定义资源(CR)中禁用 nodeAgent 字段。在禁用 nodeAgent 前,请确保 OADP Operator 闲置且没有运行任何备份。
流程
您可以设置一个作业来启用和禁用 DataProtectionApplication CR 中的 nodeAgent 字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。