备份和恢复
备份和恢复 OpenShift Container Platform 集群
摘要
第 1 章 备份和恢复 复制链接链接已复制到粘贴板!
1.1. control plane 备份和恢复操作 复制链接链接已复制到粘贴板!
作为集群管理员,您可能需要在一段时间内停止 OpenShift Container Platform 集群,并在以后重启集群。重启集群的一些原因是您需要对集群执行维护或希望降低资源成本。在 OpenShift Container Platform 中,您可以对集群执行安全关闭,以便在以后轻松重启集群。
您必须在关闭集群前 备份 etcd 数据 ;etcd 是 OpenShift Container Platform 的键值存储,它会保留所有资源对象的状态。etcd 备份在灾难恢复中扮演着关键角色。在 OpenShift Container Platform 中,您还可以替换不健康的 etcd 成员。
当您希望集群再次运行时,请安全地重启集群。
集群的证书在安装日期后一年后过期。您可以关闭集群,并在证书仍有效时安全地重启集群。虽然集群自动检索过期的 control plane 证书,但您仍需要批准证书签名请求(CSR)。
您可能会遇到 OpenShift Container Platform 无法按预期工作的一些情况,例如:
- 您有一个在重启后无法正常工作的集群,因为意外状况(如节点故障或网络连接问题)无法正常工作。
- 您已错误地删除了集群中的某些关键内容。
- 您丢失了大多数 control plane 主机,从而导致 etcd 仲裁丢失。
通过使用保存的 etcd 快照,始终可以通过将集群恢复到之前的状态来从灾难中恢复。
1.2. 应用程序备份和恢复操作 复制链接链接已复制到粘贴板!
作为集群管理员,您可以使用 OpenShift API 进行数据保护(OADP)来备份和恢复在 OpenShift Container Platform 上运行的应用程序。
根据 下载 Velero CLI 工具 中的表,按照命名空间的粒度来备份和恢复 Kubernetes 资源和内部镜像。OADP 使用快照或 Restic 来备份和恢复持久性卷(PV)。详情请查看 OADP 功能。
1.2.1. OADP 要求 复制链接链接已复制到粘贴板!
OADP 有以下要求:
-
您必须以具有
cluster-admin角色的用户身份登录。 您必须具有用于存储备份的对象存储,比如以下存储类型之一:
- OpenShift Data Foundation
- Amazon Web Services
- Microsoft Azure
- Google Cloud Platform
- S3 兼容对象存储
- IBM Cloud® Object Storage S3
如果要在 OCP 4.11 及之后的版本中使用 CSI 备份,请安装 OADP 1.1.x。
OADP 1.0.x 不支持 OCP 4.11 及更高版本上的 CSI 备份。OADP 1.0.x 包括 Velero 1.7.x,并需要 API 组 snapshot.storage.k8s.io/v1beta1,这在 OCP 4.11 及更高版本中不存在。
S3 存储的 CloudStorage API 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
要使用快照备份 PV,您必须有具有原生快照 API 的云存储,或者支持 Container Storage Interface(CSI)快照,如以下供应商:
- Amazon Web Services
- Microsoft Azure
- Google Cloud Platform
- 支持 CSI 快照的云存储,如 Ceph RBD 或 Ceph FS
如果您不想使用快照备份 PV,可以使用 Restic,这由 OADP Operator 安装。
1.2.2. 备份和恢复应用程序 复制链接链接已复制到粘贴板!
您可以通过创建一个 Backup 自定义资源 (CR) 来备份应用程序。请参阅创建备份 CR。您可以配置以下备份选项:
- 创建备份 hook,以便在备份操作之前或之后运行命令
- 调度备份
- 使用文件系统备份对应用程序进行备份:Kopia 或 Restic
-
您可以通过创建一个
Restore(CR) 来恢复应用程序备份。请参阅创建 Restore CR。 - 您可以配置 restore hook,以便在 init 容器或应用程序容器中运行命令。
第 2 章 安全地关闭集群 复制链接链接已复制到粘贴板!
本文档描述了安全关闭集群的过程。出于维护或者节约资源成本的原因,您可能需要临时关闭集群。
2.1. 先决条件 复制链接链接已复制到粘贴板!
在关闭集群前进行 etcd 备份。
重要执行此流程前务必要进行 etcd 备份,以便在重启集群遇到任何问题时可以恢复集群。
例如,以下条件可能会导致重启的集群失败:
- 关机过程中的 etcd 数据崩溃
- 因硬件原因造成节点故障
- 网络连接问题
如果集群无法恢复,请按照以下步骤恢复到以前的集群状态。
2.2. 关闭集群 复制链接链接已复制到粘贴板!
您可以以安全的方式关闭集群,以便稍后重启集群。
您可以在安装日期起的一年内关闭集群,并期望它可以正常重启。安装日期起一年后,集群证书会过期。但是,您可能需要手动批准待处理的证书签名请求(CSR),以便在集群重启时恢复 kubelet 证书。
先决条件
-
您可以使用具有
cluster-admin角色的用户访问集群。 - 已进行 etcd 备份。
流程
如果您要长时间关闭集群,请确定证书过期的日期,并运行以下命令:
oc -n openshift-kube-apiserver-operator get secret kube-apiserver-to-kubelet-signer -o jsonpath='{.metadata.annotations.auth\.openshift\.io/certificate-not-after}'$ oc -n openshift-kube-apiserver-operator get secret kube-apiserver-to-kubelet-signer -o jsonpath='{.metadata.annotations.auth\.openshift\.io/certificate-not-after}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
2022-08-05T14:37:50Zuser@user:~ $
2022-08-05T14:37:50Zuser@user:~ $1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 为确保集群可以正常重启,请计划在指定的日期或之前重启集群。当集群重启时,可能需要您手动批准待处理的证书签名请求 (CSR) 来恢复 kubelet 证书。
将集群中的所有节点标记为不可调度。您可以从云供应商的 web 控制台或运行以下循环来完成此操作:
for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; oc adm cordon ${node} ; done$ for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; oc adm cordon ${node} ; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下方法撤离 pod:
for node in $(oc get nodes -l node-role.kubernetes.io/worker -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; oc adm drain ${node} --delete-emptydir-data --ignore-daemonsets=true --timeout=15s --force ; done$ for node in $(oc get nodes -l node-role.kubernetes.io/worker -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; oc adm drain ${node} --delete-emptydir-data --ignore-daemonsets=true --timeout=15s --force ; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 关闭集群中的所有节点。您可以使用云供应商的 Web 控制台或运行以下循环来完成此操作。使用以下方法关闭节点可让 pod 安全终止,从而减少数据崩溃的可能性。
注意确保分配了 API VIP 的 control plane 节点是循环中处理的最后一个节点。否则,shutdown 命令会失败。
for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do oc debug node/${node} -- chroot /host shutdown -h 1; done$ for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do oc debug node/${node} -- chroot /host shutdown -h 1; done1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
-h 1表示此过程在 control-plane 节点关闭前可以持续的时间(以分钟为单位)。对于具有 10 个节点或更多节点的大型集群,设置为-h 10或更长时间,以确保所有计算节点都有时间关闭。
输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在关闭前,不需要排空 OpenShift Container Platform 中附带的标准 pod 的 control plane 节点。集群管理员负责确保在集群重启后,彻底重启自己的工作负载。如果因为自定义工作负载的原因已在关闭前排空 control plane 节点,您必须在重启后将 control plane 节点标记为可调度,然后集群才可以重新正常工作。
关闭不再需要的集群依赖项,如外部存储或 LDAP 服务器。在进行操作前请务必查阅您的厂商文档。
重要如果您在云供应商平台上部署了集群,请不要关闭、挂起或删除关联的云资源。如果您删除挂起的虚拟机的云资源,OpenShift Container Platform 可能无法成功恢复。
第 3 章 正常重启集群 复制链接链接已复制到粘贴板!
本文档论述了在安全关闭后重启集群的过程。
尽管在重启后集群应该可以正常工作,但可能会因为意外状况集群可能无法恢复,例如:
- 关机过程中的 etcd 数据崩溃
- 因硬件原因造成节点故障
- 网络连接问题
如果集群无法恢复,请按照以下步骤恢复到以前的集群状态。
3.1. 先决条件 复制链接链接已复制到粘贴板!
- 已安全关闭集群。
3.2. 重启集群 复制链接链接已复制到粘贴板!
您可以在集群被安全关闭后重启它。
先决条件
-
您可以使用具有
cluster-admin角色的用户访问集群。 - 此流程假设您安全关闭集群。
流程
打开 control plane 节点。
如果您在集群安装中使用
admin.kubeconfig,且 API 虚拟 IP 地址(VIP)为 up,请完成以下步骤:-
将
KUBECONFIG环境变量设置为admin.kubeconfig路径。 对于集群中的每个 control plane 节点,运行以下命令:
oc adm uncordon <node>
$ oc adm uncordon <node>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
如果您无法访问
admin.kubeconfig凭证,请完成以下步骤:- 使用 SSH 连接到 control plane 节点。
-
将
localhost-recovery.kubeconfig文件复制到/root目录中。 使用该文件为集群中的每个 control plane 节点运行以下命令:
oc adm uncordon <node>
$ oc adm uncordon <node>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 启动所有依赖设备,如外部存储或 LDAP 服务器。
启动所有集群机器。
使用适合您的云环境的方法启动机器,例如从云供应商的 Web 控制台启动机器。
等待大约 10 分钟,然后继续检查 control plane 节点的状态。
验证所有 control plane 节点都已就绪。
oc get nodes -l node-role.kubernetes.io/master
$ oc get nodes -l node-role.kubernetes.io/masterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果状态为
Ready,如以下输出中所示,则代表 control plane 节点已就绪:NAME STATUS ROLES AGE VERSION ip-10-0-168-251.ec2.internal Ready control-plane,master 75m v1.29.4 ip-10-0-170-223.ec2.internal Ready control-plane,master 75m v1.29.4 ip-10-0-211-16.ec2.internal Ready control-plane,master 75m v1.29.4
NAME STATUS ROLES AGE VERSION ip-10-0-168-251.ec2.internal Ready control-plane,master 75m v1.29.4 ip-10-0-170-223.ec2.internal Ready control-plane,master 75m v1.29.4 ip-10-0-211-16.ec2.internal Ready control-plane,master 75m v1.29.4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 control plane 节点没有就绪,请检查是否有待批准的证书签名请求 (CSR)。
获取当前 CSR 列表:
oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看一个 CSR 的详细信息以验证其是否有效:
oc describe csr <csr_name>
$ oc describe csr <csr_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<csr_name>是当前 CSR 列表中 CSR 的名称。
批准每个有效的 CSR:
oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 control plane 节点就绪后,验证所有 worker 节点是否已就绪。
oc get nodes -l node-role.kubernetes.io/worker
$ oc get nodes -l node-role.kubernetes.io/workerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果状态为
Ready,如下所示,则代表 worker 节点已就绪:NAME STATUS ROLES AGE VERSION ip-10-0-179-95.ec2.internal Ready worker 64m v1.29.4 ip-10-0-182-134.ec2.internal Ready worker 64m v1.29.4 ip-10-0-250-100.ec2.internal Ready worker 64m v1.29.4
NAME STATUS ROLES AGE VERSION ip-10-0-179-95.ec2.internal Ready worker 64m v1.29.4 ip-10-0-182-134.ec2.internal Ready worker 64m v1.29.4 ip-10-0-250-100.ec2.internal Ready worker 64m v1.29.4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 worker 节点 未 就绪,请检查是否有待批准的证书签名请求(CSR)。
获取当前 CSR 列表:
oc get csr
$ oc get csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看一个 CSR 的详细信息以验证其是否有效:
oc describe csr <csr_name>
$ oc describe csr <csr_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<csr_name>是当前 CSR 列表中 CSR 的名称。
批准每个有效的 CSR:
oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 control plane 和计算节点就绪后,运行以下命令将集群中的所有节点标记为可以调度:
for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; oc adm uncordon ${node} ; done$ for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; oc adm uncordon ${node} ; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证集群是否已正确启动。
检查是否有降级的集群 Operator。
oc get clusteroperators
$ oc get clusteroperatorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确定没有
DEGRADED条件为True的集群 Operator。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查所有节点是否处于
Ready状态:oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查所有节点的状态是否为
Ready。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果集群无法正确启动,您可能需要使用 etcd 备份来恢复集群。
第 4 章 OADP 应用程序备份和恢复 复制链接链接已复制到粘贴板!
4.1. OpenShift API for Data Protection 简介 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 产品保护 OpenShift Container Platform 上的客户应用程序。它提供全面的灾难恢复保护,涵盖 OpenShift Container Platform 应用程序、应用程序相关的集群资源、持久性卷和内部镜像。OADP 还能够备份容器化应用程序和虚拟机 (VM)。
但是,OADP 不会充当 etcd 或 OpenShift Operator 的灾难恢复解决方案。
OADP 的支持为客户工作负载命名空间和集群范围资源提供。
4.1.1. OpenShift API for Data Protection API 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 提供了 API,它允许多种方法自定义备份,并防止包含不必要的或不当的资源。
OADP 提供以下 API:
4.1.1.1. 支持 OpenShift API for Data Protection 复制链接链接已复制到粘贴板!
| Version | OCP 版本 | 公开发行(GA) | 完全支持结束 | 维护结束 | 延长更新支持(EUS) | 延长更新支持条款 2 (EUS Term 2) |
| 1.4 |
| 2024 年 7 月 10 日 | 1.5 发行之日 | 1.6 发行之日 | 2026 年 6 月 27 日 EUS 必须是针对 OCP 4.16 的 | 2027 年 6 月 27 日 EUS Term 2 必须是针对 OCP 4.16 的 |
| 1.3 |
| 2023 年 11 月 29 日 | 2024 年 7 月 10 日 | 1.5 发行之日 | 2025 年 10 月 31 日 EUS 必须是针对 OCP 4.14 的 | 2026 年 10 月 31 日 EUS Term 2 必须针对 OCP 4.14 的 |
4.1.1.1.1. 不支持的 OADP Operator 版本 复制链接链接已复制到粘贴板!
| Version | 公开发行(GA) | 完全支持结束 | 维护结束 |
| 1.2 | 2023 年 6 月 14 日 | 2023 年 11 月 29 日 | 2024 年 7 月 10 日 |
| 1.1 | 2022 年 9 月 1 日 | 2023 年 6 月 14 日 | 2023 年 11 月 29 日 |
| 1.0 | 2022 年 2 月 9 日 | 2022 年 9 月 1 日 | 2023 年 6 月 14 日 |
有关 EUS 的详情,请参阅延长更新支持。
有关 EUS Term 2 的详情,请参阅延长更新支持 Term 2。
4.2. OADP 发行注记 复制链接链接已复制到粘贴板!
4.2.1. OADP 1.4 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 的发行注记介绍了新的功能和增强功能、已弃用的功能、产品建议、已知问题和解决问题。
有关 OADP 的更多信息,请参阅 OpenShift API for Data Protection (OADP) FAQ
4.2.1.1. OADP 1.4.5 发行注记 复制链接链接已复制到粘贴板!
用于数据保护(OADP) 1.4.5 发行注记的 OpenShift API 列出新功能和已解决的问题。
4.2.1.1.1. 新功能 复制链接链接已复制到粘贴板!
使用 must-gather 工具收集日志已使用 Markdown 概述进行了改进
您可以使用 must-gather 工具来收集用于数据保护(OADP)自定义资源的日志和信息。must-gather 数据必须附加到所有客户案例。这个工具生成带有收集的信息的 Markdown 输出文件,该文件位于 must-gather 日志的集群目录中。(OADP-5904)
4.2.1.1.2. 已解决的问题 复制链接链接已复制到粘贴板!
- OADP 1.4.5 修复以下 CVE
4.2.1.2. OADP 1.4.4 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 1.4.4 是一个 CGO(Container Grade Only)版本,它刷新了容器的健康级别。与 OADP 1.4.3 相比,产品本身的代码并没有变化。
4.2.1.2.1. 已知问题 复制链接链接已复制到粘贴板!
恢复有状态应用程序的问题
当您恢复使用 azurefile-csi 存储类的有状态应用程序时,恢复操作会保留在 Finalizing 阶段。(OADP-5508)
4.2.1.3. OADP 1.4.3 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 1.4.3 发行注记中列出了以下新功能。
4.2.1.3.1. 新功能 复制链接链接已复制到粘贴板!
版本 0.7.1 中的 kubevirt velero 插件的显著变化
在这个版本中,kubevirt velero 插件已更新至版本 0.7.1。主要改进包括以下程序错误修复和新功能:
- 当所有者虚拟机被排除时,备份不再会忽略虚拟机实例(VMI)。
- 对象图现在在备份和恢复操作过程中包括所有额外对象。
- 现在,在恢复操作过程中,可选生成的标签会添加到新的固件通用唯一标识符(UUID)中。
- 现在,可以在恢复操作期间切换虚拟机运行策略。
- 现在支持通过标签清除 MAC 地址。
- 现在,在备份操作过程中会跳过特定于恢复的检查。
-
现在支持
VirtualMachineClusterInstancetype和VirtualMachineClusterPreference自定义资源定义(CRD)。
4.2.1.4. OADP 1.4.2 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 1.4.2 发行注记列出了新功能、解决的问题和程序错误,以及已知的问题。
4.2.1.4.1. 新功能 复制链接链接已复制到粘贴板!
现在,可以使用 VolumePolicy 功能备份同一命名空间中的不同卷
在这个版本中,Velero 提供资源策略,以使用 VolumePolicy 功能备份同一命名空间中的不同卷。备份不同卷所支持的 VolumePolicy 功能包括 skip, snapshot, 和 fs-backup 操作。OADP-1071
文件系统 backup and data mover 现在可以使用短期凭证
文件系统 backup and data mover 现在可以使用短期凭证,如 AWS 安全令牌服务 (STS) 和 GCP WIF。现在,备份会在没有 PartiallyFailed 状态的情况下成功完成。OADP-5095
4.2.1.4.2. 已解决的问题 复制链接链接已复制到粘贴板!
现在,如果 VSL 包含不正确的供应商值,DPA 会报告错误
在以前的版本中,如果卷快照位置(VSL) spec 的供应商不正确,则数据保护应用程序(DPA)可以成功协调。在这个版本中,DPA 会报告错误并请求一个有效的供应商值。OADP-5044
对于使用不同 OADP 命名空间的备份和恢复,Data Mover 恢复可以成功。
在以前的版本中,当使用在一个命名空间中安装的 OADP 执行备份,但使用安装在不同命名空间中的 OADP 恢复时,Data Mover 恢复会失败。在这个版本中,Data Mover 恢复可以成功。OADP-5460
SSE-C 备份可用于计算的 secret 密钥的 MD5
在以前的版本中,备份失败并显示以下错误:
Requests specifying Server Side Encryption with Customer provided keys must provide the client calculated MD5 of the secret key.
Requests specifying Server Side Encryption with Customer provided keys must provide the client calculated MD5 of the secret key.
在这个版本中,解决了使用客户提供密钥(SSE-C) base64 和 MD5 哈希的 Server-Side 加密。因此,SSE-C 备份可用于计算的 secret 密钥的 MD5另外,customerKey 大小的不正确的 errorhandling 也被修复。OADP-5388
有关本发行版本中解决的所有问题的完整列表,请参阅 JIRA 中的 OADP 1.4.2 解决的问题列表。
4.2.1.4.3. 已知问题 复制链接链接已复制到粘贴板!
Data Mover restore 操作不支持 nodeSelector spec
当使用 nodeAgent 参数中设置的 nodeSelector 字段创建数据保护应用程序(DPA)时,Data Mover restore 部分会失败,而不是完成恢复操作。OADP-5260
当指定了 TLS 跳过验证时,S3 存储不会使用代理环境
在镜像 registry 备份中,当 insecureSkipTLSVerify 参数设置为 true 时,S3 存储不会使用代理环境。OADP-3143
Kopia 在备份过期后不会删除工件
在备份过期后,即使删除了备份,Kopia 也不会从 S3 位置的 ${bucket_name}/kopia/$openshift-adp 中删除卷工件。如需更多信息,请参阅"关于 Kopia 仓库维护"。OADP-5131
4.2.1.5. OADP 1.4.1 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 1.4.1 发行注记列出了新功能、解决的问题和程序错误,以及已知的问题。
4.2.1.5.1. 新功能 复制链接链接已复制到粘贴板!
新的 DPA 字段以更新客户端 qps 和 burst
现在,您可以使用新的数据保护应用程序 (DPA) 字段更改 Velero Server Kubernetes API 查询每秒(qps)和突发(burst)值。新的 DPA 字段是 spec.configuration.velero.client-qps 和 spec.configuration.velero.client-burst,它们都默认为 100。OADP-4076
使用 Kopia 启用非默认算法
在这个版本中,您可以在 Kopia 中配置哈希、加密和分割程序算法来选择非默认选项来优化不同备份工作负载的性能。
要配置这些算法,在 DataProtectionApplication (DPA) 配置的 podConfig 部分中设置 velero pod 的 env 变量。如果没有设置此变量,或者选择了一个不被支持的算法,Kopia 将默认为其标准算法。OADP-4640
4.2.1.5.2. 已解决的问题 复制链接链接已复制到粘贴板!
现在可以成功恢复没有 pod 的备份
在以前的版本中,恢复没有 pod 的备份,并将 StorageClass VolumeBindingMode 设置为 WaitForFirstConsumer 会导致 PartiallyFailed 状态出现错误:fail to patch dynamic PV, err: context deadline exceeded。在这个版本中,会跳过对动态 PV 进行补丁,并可以成功恢复备份,不再会出现 PartiallyFailed 状态。OADP-4231
PodVolumeBackup CR 现在显示正确的消息
在以前的版本中,PodVolumeBackup 自定义资源 (CR) 会生成不正确的消息:get a podvolumebackup with status "InProgress" during the server starting, mark it as "Failed"。在这个版本中,生成的消息是:
found a podvolumebackup with status "InProgress" during the server starting, mark it as "Failed".
found a podvolumebackup with status "InProgress" during the server starting,
mark it as "Failed".
现在,可以使用 DPA 覆盖 imagePullPolicy
在以前的版本中,OADP 将所有镜像的 imagePullPolicy 参数都设置为 Always。在这个版本中,OADP 会检查每个镜像是否包含了 sha256 或 sha512 摘要,然后将 imagePullPolicy 设置为 IfNotPresent; 否则 imagePullPolicy 被设置为 Always。现在,您可以使用新的 spec.containerImagePullPolicy DPA 字段覆盖此策略。OADP-4172
现在,如果初始更新失败,OADP Velero 现在可以重试更新恢复状态
在以前的版本中,OADP Velero 无法更新恢复的 CR 状态。这会无限期保留 InProgress 状态。依赖于备份和恢复 CR 状态以确定完成会失败的组件。在这个版本中,恢复的恢复 CR 状态可以正确地进入 Completed 或 Failed 状态。OADP-3227
从不同的集群恢复 BuildConfig 构建会成功,且没有任何错误
在以前的版本中,当从其他集群执行 BuildConfig Build 资源恢复时,应用程序会在内部镜像 registry 的 TLS 验证过程中生成一个错误。错误信息 failed to verify certificate: x509: certificate signed by unknown authority。在这个版本中,BuildConfig 构建资源恢复到不同的集群可以成功进行,而不会生成 failed to verify certificate 错误。OADP-4692
恢复空的 PVC 可以成功
在以前的版本中,在恢复空的持久性卷声明 (PVC) 时,下载数据会失败。这个失败带有以下错误:
data path restore failed: Failed to run kopia restore: Unable to load
snapshot : snapshot not found
data path restore failed: Failed to run kopia restore: Unable to load
snapshot : snapshot not found
在这个版本中,在恢复空 PVC 时,下载数据的过程会正确处理,不会生成错误信息。OADP-3106
CSI 和 DataMover 插件中没有 Velero 内存泄漏的问题
在以前的版本中,使用 CSI 和 DataMover 插件会导致 Velero 内存泄漏。当备份结束时,Velero 插件实例不会被删除,在 Velero pod 中生成 内存不足(OOM )条件前,内存泄漏会消耗内存。在这个版本中,当使用 CSI 和 DataMover 插件时,不会出现 Velero 内存泄漏的问题。OADP-4448
在相关 PV 被释放前,post-hook 操作不会启动
在以前的版本中,由于 Data Mover 操作的异步性,在 Data Mover 持久性卷声明 (PVC) 释放相关 pod 的持久性卷 (PV) 前,可能会尝试进行 post-hook 操作。此问题会导致备份失败,并显示 PartiallyFailed 状态。在这个版本中,在 Data Mover PVC 发布相关的 PV 前,才会启动 post-hook 操作,从而避免出现 PartiallyFailed 备份状态。OADP-3140
在带有超过 37 个字符的命名空间中部署 DPA 可以正常工作
当您在带有超过 37 个字符的命名空间中安装 OADP Operator 来创建新的 DPA 时,标记 "cloud-credentials" Secret 会失败,DPA 报告以下错误:
The generated label name is too long.
The generated label name is too long.
在这个版本中,在名称中有超过 37 个字符的命名空间中创建 DPA 不会失败。OADP-3960
恢复可以通过覆盖超时错误成功完成
在以前的版本中,在大规模环境中,恢复操作会导致 Partiallyfailed 状态并带有错误:fail to patch dynamic PV, err: context deadline exceeded。在这个版本中,可以使用 resourceTimeout Velero 服务器参数覆盖这个超时错误,从而使恢复可以成功完成。OADP-4344
有关本发行版本中解决的所有问题的完整列表,请参阅 JIRA 中的 OADP 1.4.1 解决的问题列表。
4.2.1.5.3. 已知问题 复制链接链接已复制到粘贴板!
恢复 OADP 后,Cassandra 应用程序 pod 进入 CrashLoopBackoff 状态
在 OADP 恢复后,Cassandra 应用程序 pod 可能会进入 CrashLoopBackoff 状态。要临时解决这个问题,删除在恢复 OADP 后返回错误 CrashLoopBackoff 状态的 StatefulSet pod。然后,StatefulSet 控制器会重新创建这些 pod 并正常运行。OADP-4407
引用 ImageStream 的部署不会被正确恢复,并导致 pod 和卷内容被破坏
在文件系统备份(FSB)恢复操作中,引用 ImageStream 的 Deployment 资源没有被正确恢复。恢复运行 FSB 的 pod,postHook 会被提前终止。
在恢复操作过程中,OpenShift Container Platform 控制器会使用一个更新的 ImageStreamTag 哈希更新 Deployment 资源中的 spec.template.spec.containers[0].image 字段。更新会触发推出新的 pod,终止 velero 运行 FSB 和 post-hook 的 pod。有关镜像流触发器的更多信息,请参阅触发镜像流更新。
这个行为的临时解决方案分为两个步骤:
执行排除了
Deployment资源的恢复,例如:velero restore create <RESTORE_NAME> \ --from-backup <BACKUP_NAME> \ --exclude-resources=deployment.apps
$ velero restore create <RESTORE_NAME> \ --from-backup <BACKUP_NAME> \ --exclude-resources=deployment.appsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 第一次恢复成功后,通过包含这些资源来执行第二次恢复,例如:
velero restore create <RESTORE_NAME> \ --from-backup <BACKUP_NAME> \ --include-resources=deployment.apps
$ velero restore create <RESTORE_NAME> \ --from-backup <BACKUP_NAME> \ --include-resources=deployment.appsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.1.6. OADP 1.4.0 发行注记 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 1.4.0 发行注记列出了已解决的问题和已知问题。
4.2.1.6.1. 已解决的问题 复制链接链接已复制到粘贴板!
恢复在 OpenShift Container Platform 4.16 中可以正常工作
在以前的版本中,当恢复已删除的应用程序命名空间时,恢复操作部分失败,在 OpenShift Container Platform 4.16 中会出现 resource name may not be empty 错误。在这个版本中,恢复在 OpenShift Container Platform 4.16 中可以正常工作。OADP-4075
Data Mover backups 在 OpenShift Container Platform 4.16 集群中可以正常工作
在以前的版本中,Velero 使用早期版本的 SDK,其中 Spec.SourceVolumeMode 字段不存在。因此,在带有 v4.2 版本的外部快照器上的 OpenShift Container Platform 4.16 集群中,Data Mover backups 会失败。在这个版本中,外部快照升级到 v7.0 及更新版本。因此,在 OpenShift Container Platform 4.16 集群中备份不会失败。OADP-3922
有关本发行版本中解决的所有问题的完整列表,请参阅 JIRA 中的 OADP 1.4.0 解决的问题列表。
4.2.1.6.2. 已知问题 复制链接链接已复制到粘贴板!
在没有为 MCG 设置 checksumAlgorithm 时,备份会失败
在对任何使用 Noobaa 作为备份位置的应用程序进行备份时,如果未设置 checksumAlgorithm 配置参数,备份会失败。要解决这个问题,如果您在 Backup Storage Location (BSL) 配置中没有为 checksumAlgorithm 提供值,则会添加一个空值。空值只为使用数据保护应用程序 (DPA) 自定义资源 (CR) 创建的 BSLs 添加,如果使用任何其他方法创建 BSL,则不会添加这个值。OADP-4274
有关本发行版本中所有已知问题的完整列表,请参阅 JIRA 中的 OADP 1.4.0 已知问题 列表。
4.2.1.6.3. 升级备注 复制链接链接已复制到粘贴板!
始终升级到下一个次版本。不要 跳过版本。要升级到更新的版本,请一次只升级一个频道。例如,若要从 OpenShift API for Data Protection (OADP) 1.1 升级到 1.3,首先升级到 1.2,然后再升级到 1.3。
4.2.1.6.3.1. 从 OADP 1.3 更改为 1.4 复制链接链接已复制到粘贴板!
Velero 服务器已从 1.12 版本更新至 1.14。请注意,数据保护应用程序 (DPA) 没有改变。
这会更改以下内容:
-
velero-plugin-for-csi代码现在包括在 Velero 代码中,这意味着插件不再需要init容器。 - Velero 将客户端 Burst 和 QPS 默认值分别从 30 和 20 改为 100 和 100。
velero-plugin-for-aws插件更新了BackupStorageLocation对象(BSLs)中的spec.config.checksumAlgorithm字段的默认值,从""(不计算 checksum) 改为CRC32算法。知道 checksum 算法类型只能用于 AWS。几个 S3 供应商要求通过将 checksum 算法设置为""来禁用md5sum。使用您的存储供应商确认md5sum算法支持和配置。在 OADP 1.4 中,为此配置在 DPA 中创建 BSL 的默认值为
""。这个默认值表示没有检查md5sum,它与 OADP 1.3 一致。对于在 DPA 中创建的 BSL,使用 DPA 中的spec.backupLocations[].velero.config.checksumAlgorithm字段更新它。如果您的 BSLs 在 DPA 之外创建,您可以使用 BSLs 中的spec.config.checksumAlgorithm来更新此配置。
4.2.1.6.3.2. 备份 DPA 配置 复制链接链接已复制到粘贴板!
您必须备份当前的 DataProtectionApplication (DPA) 配置。
流程
运行以下命令来保存您当前的 DPA 配置:
示例命令
oc get dpa -n openshift-adp -o yaml > dpa.orig.backup
$ oc get dpa -n openshift-adp -o yaml > dpa.orig.backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.1.6.3.3. 升级 OADP Operator 复制链接链接已复制到粘贴板!
在升级 OpenShift API for Data Protection (OADP) Operator 时,请使用以下步骤。
流程
-
将 OADP Operator 的订阅频道从
stable-1.3改为stable-1.4。 - 等待 Operator 和容器更新并重启。
4.2.1.6.4. 将 DPA 转换为新版本 复制链接链接已复制到粘贴板!
要从 OADP 1.3 升级到 1.4,则不需要数据保护应用程序 (DPA) 更改。
4.2.1.6.5. 验证升级 复制链接链接已复制到粘贴板!
使用以下步骤验证升级。
流程
运行以下命令,查看 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.3. OADP 性能 复制链接链接已复制到粘贴板!
4.3.1. OADP 推荐的网络设置 复制链接链接已复制到粘贴板!
对于用于数据保护(OADP)的 OpenShift API 的支持体验,您应该在 OpenShift 节点、S3 存储和满足 OpenShift 网络要求建议的受支持云环境中有一个稳定且有弹性的网络。
为确保使用位于带有子优化数据路径的远程 S3 存储桶部署的成功备份和恢复操作,建议在这样的最佳条件中满足以下最低要求:
- 带宽(网络上传速度到对象存储):对小型备份而言大于 2 Mbps;对于大型备份,根据数据卷,需要 10-100 Mbps。
- 数据包丢失:1%
- 数据包崩溃:1%
- 延迟: 100ms
确保 OpenShift Container Platform 网络以最佳方式执行,并满足 OpenShift Container Platform 网络要求。
虽然红帽为标准备份和恢复失败提供支持,但它不支持由不符合推荐的阈值的网络设置导致的故障。
4.4. OADP 功能和插件 复制链接链接已复制到粘贴板!
OpenShift API 用于数据保护(OADP)功能,提供用于备份和恢复应用的选项。
默认插件使 Velero 能够与某些云供应商集成,并备份和恢复 OpenShift Container Platform 资源。
4.4.1. OADP 功能 复制链接链接已复制到粘贴板!
OpenShift API 用于数据保护(OADP)支持以下功能:
- Backup
您可以使用 OADP 备份 OpenShift Platform 中的所有应用程序,或者您可以根据类型、命名空间或标签过滤资源。
OADP 通过将 Kubernetes 对象和内部镜像保存为对象存储上的存档文件来备份 Kubernetes 对象和内部镜像。OADP 使用原生云快照 API 或通过容器存储接口(CSI)创建快照来备份持久性卷(PV)。对于不支持快照的云供应商,OADP 使用 Restic 备份资源和 PV 数据。
注意您必须从应用程序的备份中排除 Operator,以便成功备份和恢复。
- 恢复
您可以从备份中恢复资源和 PV。您可以恢复备份中的所有对象,或者根据命名空间、PV 或标签过滤对象。
注意您必须从应用程序的备份中排除 Operator,以便成功备份和恢复。
- 调度
- 您可以通过指定的间隔调度备份。
- 钩子
-
您可以使用 hook 在 pod 上的容器中运行命令,如
fsfreeze以冻结文件系统。您可以将 hook 配置为在备份或恢复之前或之后运行。恢复 hook 可以在 init 容器或应用程序容器中运行。
4.4.2. OADP 插件 复制链接链接已复制到粘贴板!
用于数据保护(OADP)的 OpenShift API 提供了与存储供应商集成的默认 Velero 插件,以支持备份和恢复操作。您可以根据 Velero 插件创建自定义插件。
OADP 还为 OpenShift Container Platform 资源备份、OpenShift Virtualization 资源备份和 Container Storage Interface(CSI)快照提供了插件。
| OADP 插件 | 功能 | 存储位置 |
|---|---|---|
|
| 备份和恢复 Kubernetes 对象。 | AWS S3 |
| 使用快照备份和恢复卷。 | AWS EBS | |
|
| 备份和恢复 Kubernetes 对象。 | Microsoft Azure Blob 存储 |
| 使用快照备份和恢复卷。 | Microsoft Azure 管理的磁盘 | |
|
| 备份和恢复 Kubernetes 对象。 | Google Cloud Storage |
| 使用快照备份和恢复卷。 | Google Compute Engine 磁盘 | |
|
| 备份和恢复 OpenShift Container Platform 资源。[1] | 对象存储 |
|
| 备份和恢复 OpenShift Virtualization 资源。[2] | 对象存储 |
|
| 使用 CSI 快照备份和恢复卷。[3] | 支持 CSI 快照的云存储 |
|
| VolumeSnapshotMover 将快照从集群重新定位到一个在恢复过程中使用的对象存储中以恢复有状态的应用程序,例如集群删除的情况。[4] | 对象存储 |
- 必需。
- 虚拟机磁盘使用 CSI 快照或 Restic 备份。
csi插件使用 Kubernetes CSI 快照 API。-
OADP 1.1 或更高版本使用
snapshot.storage.k8s.io/v1 -
OADP 1.0 使用
snapshot.storage.k8s.io/v1beta1
-
OADP 1.1 或更高版本使用
- 仅限 OADP 1.2。
4.4.3. 关于 OADP Velero 插件 复制链接链接已复制到粘贴板!
安装 Velero 时,您可以配置两种类型的插件:
- 默认云供应商插件
- 自定义插件
两种类型的插件都是可选的,但大多数用户都会至少配置一个云供应商插件。
4.4.3.1. 默认 Velero 云供应商插件 复制链接链接已复制到粘贴板!
当您在部署过程中配置 oadp_v1alpha1_dpa.yaml 文件时,您可以安装以下默认 Velero 云供应商插件:
-
aws(Amazon Web Services) -
gcp(Google Cloud Platform) -
azure(Microsoft Azure) -
openshift(OpenShift Velero plugin) -
csi(Container Storage Interface) -
kubevirt(KubeVirt)
在部署过程中,您可以在 oadp_v1alpha1_dpa.yaml 文件中指定所需的默认插件。
示例文件
以下 .yaml 文件会安装 openshift、aws、azure 和 gcp 插件:
4.4.3.2. 自定义 Velero 插件 复制链接链接已复制到粘贴板!
您可在部署期间配置 oadp_v1alpha1_dpa.yaml 文件时,通过指定插件 镜像和名称来安装自定义 Velero 插件。
在部署过程中,您可以在 oadp_v1alpha1_dpa.yaml 文件中指定所需的自定义插件。
示例文件
以下 .yaml 文件会安装默认的 openshift、azure 和 gcp 插件,以及一个自定义插件,其名称为 custom-plugin-example 和镜像 quay.io/example-repo/custom-velero-plugin :
4.4.3.3. Velero 插件返回 "received EOF, stop recv loop" 信息 复制链接链接已复制到粘贴板!
Velero 插件作为单独的进程启动。当 Velero 操作完成后,无论是否成功,它们都会退出。接收到 received EOF, stopping recv loop 消息表示插件操作已完成。这并不意味着发生了错误。
4.4.4. OADP 支持的构架 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 支持以下构架:
- AMD64
- ARM64
- PPC64le
- s390x
OADP 1.2.0 及更新版本支持 ARM64 架构。
4.4.5. OADP 支持 IBM Power 和 IBM Z 复制链接链接已复制到粘贴板!
OpenShift API for Data Protection (OADP) 是一个平台中立的平台。以下的信息只与 IBM Power® 和 IBM Z® 相关。
- OADP 1.3.6 对于 IBM Power® 和 IBM Z® 中的 OpenShift Container Platform 4.12, 4.13, 4.14, 和 4.15 进行了成功测试。以下章节提供了在这些系统的备份位置上 OADP 1.3.6 的测试和支持信息。
- OADP 1.4.5 被针对 IBM Power® 和 IBM Z® 的 OpenShift Container Platform 4.14、4.15、4.16 和 4.17 成功测试。以下章节提供了在这些系统的备份位置上 OADP 1.4.5 的测试和支持信息。
4.4.5.1. OADP 支持使用 IBM Power 的目标备份位置 复制链接链接已复制到粘贴板!
- 使用 OpenShift Container Platform 4.12, 4.13, 4.14, 和 4.15 和 OADP 1.3.6 运行 IBM Power® 已针对 AWS S3 备份位置目标成功进行了测试。虽然测试只涉及一个 AWS S3 目标,但红帽也支持针对所有 S3 备份位置目标使用 OpenShift Container Platform 4.13, 4.14, 和 4.15, 和 OADP 1.3.6 运行 IBM Power®,它们不是 AWS。
- 使用 OpenShift Container Platform 4.14、4.15、4.16 和 4.17 和 OADP 1.4.5 运行 IBM Power®,针对 AWS S3 备份位置目标成功进行了测试。虽然测试只涉及一个 AWS S3 目标,但红帽也支持在 OpenShift Container Platform 4.14、4.15、4.16 和 4.17 以及 OADP 1.4.5 中运行 IBM Power®,它们不是 AWS。
4.4.5.2. OADP 测试并支持使用 IBM Z 的目标备份位置 复制链接链接已复制到粘贴板!
- 使用 OpenShift Container Platform 4.12, 4.13, 4.14, 和 4.15 以及 1.3.6 运行 IBM Z® 已针对 AWS S3 备份位置目标成功进行了测试。虽然测试只涉及一个 AWS S3 目标,但红帽也支持针对所有 S3 备份位置目标使用 OpenShift Container Platform 4.13 4.14, 和 4.15, 以及 1.3.6 运行 IBM Z®。
- 在 IBM Z® 中运行 OpenShift Container Platform 4.14、4.15、4.16 和 4.17,1.4.5 被针对 AWS S3 备份位置目标成功进行了测试。虽然测试只涉及一个 AWS S3 目标,但红帽也支持在 IBM Z® 中运行 OpenShift Container Platform 4.14、4.15、4.16 和 4.17,以及 1.4.5,它们不是 AWS。
4.4.5.2.1. 使用 IBM Power (R) 和 IBM Z (R) 平台的 OADP 已知问题 复制链接链接已复制到粘贴板!
- 目前,在 IBM Power® 和 IBM Z® 平台上部署的单节点 OpenShift 集群的备份方法限制。目前,只有 NFS 存储与这些平台上的单节点 OpenShift 集群兼容。另外,只支持文件系统备份 (FSB) 方法,如 Kopia 和 Restic 用于备份和恢复操作。当前没有解决此问题的方法。
4.4.6. OADP 插件的已知问题 复制链接链接已复制到粘贴板!
以下章节介绍了 OpenShift API for Data Protection (OADP) 插件中的已知问题:
4.4.6.1. 因为缺少 secret,Velero 插件在镜像流备份过程中会出现错误 复制链接链接已复制到粘贴板!
当在数据保护应用程序(DPA)范围外管理备份和备份存储位置(BSL)时,OADP 控制器,这意味着 DPA 协调不会创建相关的 oadp-<bsl_name>-<bl_provider>-registry-secret。
当备份运行时,OpenShift Velero 插件在镜像流备份中出现错误,并显示以下错误:
024-02-27T10:46:50.028951744Z time="2024-02-27T10:46:50Z" level=error msg="Error backing up item" backup=openshift-adp/<backup name> error="error executing custom action (groupResource=imagestreams.image.openshift.io, namespace=<BSL Name>, name=postgres): rpc error: code = Aborted desc = plugin panicked: runtime error: index out of range with length 1, stack trace: goroutine 94…
024-02-27T10:46:50.028951744Z time="2024-02-27T10:46:50Z" level=error msg="Error backing up item"
backup=openshift-adp/<backup name> error="error executing custom action (groupResource=imagestreams.image.openshift.io,
namespace=<BSL Name>, name=postgres): rpc error: code = Aborted desc = plugin panicked:
runtime error: index out of range with length 1, stack trace: goroutine 94…
4.4.6.1.1. 临时解决方案以避免出现错误 复制链接链接已复制到粘贴板!
要避免 Velero 插件 panic 错误,请执行以下步骤:
使用相关标签标记自定义 BSL:
oc label backupstoragelocations.velero.io <bsl_name> app.kubernetes.io/component=bsl
$ oc label backupstoragelocations.velero.io <bsl_name> app.kubernetes.io/component=bslCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在标记 BSL 后,等待 DPA 协调。
注意您可以通过对 DPA 本身进行任何更改来强制进行协调。
当 DPA 协调时,确认相关的
oadp-<bsl_name>-<bsl_provider>-registry-secret已被填充到其中:oc -n openshift-adp get secret/oadp-<bsl_name>-<bsl_provider>-registry-secret -o json | jq -r '.data'
$ oc -n openshift-adp get secret/oadp-<bsl_name>-<bsl_provider>-registry-secret -o json | jq -r '.data'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.6.2. OpenShift ADP Controller 分段错误 复制链接链接已复制到粘贴板!
如果您在同时启用了 cloudstorage 和 restic 的情况下配置 DPA,openshift-adp-controller-manager pod 会无限期重复崩溃和重启过程,直到 pod 出现一个崩溃循环分段错误为止。
您只能定义 velero 或 cloudstorage,它们是互斥的字段。
-
如果您同时定义了
velero和cloudstorage,openshift-adp-controller-manager会失败。 -
如果
velero和cloudstorage都没有定义,openshift-adp-controller-manager也将失败。
有关此问题的更多信息,请参阅 OADP-1054。
4.4.6.2.1. OpenShift ADP Controller 分段错误临时解决方案 复制链接链接已复制到粘贴板!
在配置一个 DPA 时,您必须定义 velero 或 cloudstorage。如果您在 DPA 中同时定义了这两个 API,openshift-adp-controller-manager pod 会失败,并显示崩溃循环分段错误。
4.4.7. OADP 和 FIPS 复制链接链接已复制到粘贴板!
联邦信息处理标准(FIPS)是美国联邦政府开发的一组计算机安全标准,符合联邦信息安全管理法案(FISMA)。
OpenShift API for Data Protection (OADP)已被测试,并可用于启用了 FIPS 的 OpenShift Container Platform 集群。
4.5. OADP 用例 复制链接链接已复制到粘贴板!
以下是使用 OADP 和 ODF 备份应用程序的用例。
4.5.1.1. 使用 OADP 和 ODF 备份应用程序 复制链接链接已复制到粘贴板!
在这种情况下,您可以使用 OADP 备份应用程序,并将备份存储在 Red Hat OpenShift Data Foundation (ODF) 提供的对象存储中。
- 您可以创建一个对象存储桶声明(OBC)来配置备份存储位置。您可以使用 ODF 配置 Amazon S3 兼容对象存储桶。ODF 提供 MultiCloud Object Gateway (NooBaa MCG) 和 Ceph 对象网关,也称为 RADOS 网关(RGW)、对象存储服务。在这种情况下,您可以使用 NooBaa MCG 作为备份存储位置。
-
您可以使用
aws供应商插件在 OADP 中使用 NooBaa MCG 服务。 - 您可以使用备份存储位置(BSL)配置数据保护应用程序(DPA)。
- 您可以创建备份自定义资源(CR)并指定要备份的应用程序命名空间。
- 您可以创建并验证备份。
先决条件
- 已安装 OADP Operator。
- 已安装 ODF Operator。
- 您有一个应用程序,其数据库在单独的命名空间中运行。
流程
创建一个 OBC 清单文件来请求 NooBaa MCG 存储桶,如下例所示:
OBC 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 OBC:
oc create -f <obc_file_name>
$ oc create -f <obc_file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定对象存储桶声明清单的文件名。
当您创建 OBC 时,ODF 会创建一个
secret和一个配置映射,其名称与对象存储桶声明相同。secret具有存储桶凭证,配置映射有访问存储桶的信息。要从生成的配置映射中获取存储桶名称和存储桶主机,请运行以下命令:oc extract --to=- cm/test-obc
$ oc extract --to=- cm/test-obc1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
test-obc是 OBC 的名称。
输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要从生成的
secret获取存储桶凭证,请运行以下命令:oc extract --to=- secret/test-obc
$ oc extract --to=- secret/test-obcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
# AWS_ACCESS_KEY_ID ebYR....xLNMc # AWS_SECRET_ACCESS_KEY YXf...+NaCkdyC3QPym
# AWS_ACCESS_KEY_ID ebYR....xLNMc # AWS_SECRET_ACCESS_KEY YXf...+NaCkdyC3QPymCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,从
openshift-storage命名空间中的 s3 路由获取 S3 端点的公共 URL:oc get route s3 -n openshift-storage
$ oc get route s3 -n openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用对象存储桶凭证创建一个
cloud-credentials文件,如下所示:[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 使用
cloud-credentials文件内容创建cloud-credentialssecret,如下所示:oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentials
$ oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentialsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置 Data Protection Application (DPA),如下例所示:
DPA 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 DPA:
oc apply -f <dpa_filename>
$ oc apply -f <dpa_filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证 DPA 是否已成功创建。在示例输出中,您可以看到
status对象将type字段设置为Reconciled。这意味着 DPA 已被成功创建。oc get dpa -o yaml
$ oc get dpa -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证备份存储位置(BSL)是否可用:
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 3s 15s true
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置备份 CR,如下例所示:
备份 CR 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定要备份的应用程序的命名空间。
运行以下命令来创建备份 CR:
oc apply -f <backup_cr_filename>
$ oc apply -f <backup_cr_filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证备份对象是否处于
Completed阶段。如需了解更多详细信息,请参阅示例输出。oc describe backup test-backup -n openshift-adp
$ oc describe backup test-backup -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.2. OpenShift API for Data Protection (OADP) 恢复用例 复制链接链接已复制到粘贴板!
以下是使用 OADP 的用例将备份恢复到不同的命名空间。
4.5.2.1. 使用 OADP 将应用程序恢复到不同的命名空间 复制链接链接已复制到粘贴板!
使用 OADP 将应用程序的备份恢复到新目标命名空间 test-restore-application。要恢复备份,请创建一个恢复自定义资源 (CR),如下例所示。在恢复 CR 中,源命名空间指的是您在备份中包含的应用程序命名空间。然后,您可以通过将项目更改为新的恢复的命名空间并验证资源来验证恢复。
先决条件
- 已安装 OADP Operator。
- 您已备份要恢复的应用程序。
流程
创建一个恢复 CR,如下例所示:
恢复 CR 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用恢复 CR:
oc apply -f <restore_cr_filename>
$ oc apply -f <restore_cr_filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证恢复是否处于
Completed阶段:oc describe restores.velero.io <restore_name> -n openshift-adp
$ oc describe restores.velero.io <restore_name> -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,进入恢复的命名空间
test-restore-application:oc project test-restore-application
$ oc project test-restore-applicationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证恢复的资源,如持久性卷声明(pvc)、服务(svc)、部署、secret 和配置映射:
oc get pvc,svc,deployment,secret,configmap
$ oc get pvc,svc,deployment,secret,configmapCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.3. 在备份过程中包括自签名 CA 证书 复制链接链接已复制到粘贴板!
您可以在数据保护应用程序(DPA)中包括自签名证书颁发机构(CA)证书,然后备份应用程序。您可以将备份存储在 Red Hat OpenShift Data Foundation (ODF) 提供的 NooBaa 存储桶中。
4.5.3.1. 备份应用程序及其自签名 CA 证书 复制链接链接已复制到粘贴板!
ODF 提供的 s3.openshift-storage.svc 服务使用使用自签名服务 CA 签名的传输层安全协议 (TLS) 证书。
要防止 由未知颁发机构签名的证书,您必须在 DataProtectionApplication 自定义资源(CR)的备份存储位置(BSL)部分包含自签名 CA 证书。在这种情况下,您必须完成以下任务:
- 通过创建对象存储桶声明(OBC)来请求 NooBaa 存储桶。
- 提取存储桶详情。
-
在
DataProtectionApplicationCR 中包含自签名 CA 证书。 - 备份应用程序。
先决条件
- 已安装 OADP Operator。
- 已安装 ODF Operator。
- 您有一个应用程序,其数据库在单独的命名空间中运行。
流程
创建 OBC 清单以请求 NooBaa 存储桶,如下例所示:
ObjectBucketClaimCR 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 OBC:
oc create -f <obc_file_name>
$ oc create -f <obc_file_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当您创建 OBC 时,ODF 会创建一个
secret和一个配置映射,其名称与对象存储桶声明相同。secret对象包含存储桶凭证,ConfigMap对象包含用于访问存储桶的信息。要从生成的配置映射中获取存储桶名称和存储桶主机,请运行以下命令:oc extract --to=- cm/test-obc
$ oc extract --to=- cm/test-obc1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- OBC 的名称为
test-obc。
输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要从
secret对象获取存储桶凭证,请运行以下命令:oc extract --to=- secret/test-obc
$ oc extract --to=- secret/test-obcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
# AWS_ACCESS_KEY_ID ebYR....xLNMc # AWS_SECRET_ACCESS_KEY YXf...+NaCkdyC3QPym
# AWS_ACCESS_KEY_ID ebYR....xLNMc # AWS_SECRET_ACCESS_KEY YXf...+NaCkdyC3QPymCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下示例配置创建带有对象存储桶凭证的
cloud-credentials文件:[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 运行以下命令,创建带有
cloud-credentials文件内容的cloud-credentialssecret:oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentials
$ oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentialsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,从
openshift-service-ca.crt配置映射中提取服务 CA 证书。确保您以Base64格式编码证书,并记录下一步中使用的值。oc get cm/openshift-service-ca.crt \ -o jsonpath='{.data.service-ca\.crt}' | base64 -w0; echo$ oc get cm/openshift-service-ca.crt \ -o jsonpath='{.data.service-ca\.crt}' | base64 -w0; echoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0... ....gpwOHMwaG9CRmk5a3....FLS0tLS0K
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0... ....gpwOHMwaG9CRmk5a3....FLS0tLS0KCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用存储桶名称和 CA 证书配置
DataProtectionApplicationCR 清单文件,如下例所示:DataProtectionApplicationCR 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
DataProtectionApplicationCR:oc apply -f <dpa_filename>
$ oc apply -f <dpa_filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证
DataProtectionApplicationCR 是否已成功创建:oc get dpa -o yaml
$ oc get dpa -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证备份存储位置(BSL)是否可用:
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 3s 15s true
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下示例配置
BackupCR:BackupCR 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定要备份的应用程序的命名空间。
运行以下命令来创建
BackupCR:oc apply -f <backup_cr_filename>
$ oc apply -f <backup_cr_filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证
Backup对象是否处于Completed阶段:oc describe backup test-backup -n openshift-adp
$ oc describe backup test-backup -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.4. 使用 legacy-aws Velero 插件 复制链接链接已复制到粘贴板!
如果您使用一个 AWS S3 兼容备份存储位置,在备份应用程序时可能会出现 SignatureDoesNotMatch 错误。发生此错误的原因是,一些备份存储位置仍然使用旧版本的 S3 API,这与 Go V2 的较新的 AWS SDK 不兼容。要解决这个问题,您可以在 DataProtectionApplication 自定义资源(CR)中使用 legacy-aws Velero 插件。legacy-aws Velero 插件使用旧的 AWS SDK 用于 Go V1,它与旧的 S3 API 兼容,确保备份成功。
在以下用例中,您可以使用 legacy-aws Velero 插件配置 DataProtectionApplication CR,然后备份应用程序。
根据您选择的备份存储位置,您可以在 DataProtectionApplication CR 中使用 legacy-aws 或 aws 插件。如果您在 DataProtectionApplication CR 中同时使用了这两个插件,则会出现以下错误:aws and legacy-aws can not be both specified in DPA spec.configuration.velero.defaultPlugins。
先决条件
- 已安装 OADP Operator。
- 您已将一个 AWS S3 兼容对象存储配置为备份位置。
- 您有一个应用程序,其数据库在单独的命名空间中运行。
流程
将
DataProtectionApplicationCR 配置为使用legacy-awsVelero 插件,如下例所示:DataProtectionApplicationCR 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
DataProtectionApplicationCR:oc apply -f <dpa_filename>
$ oc apply -f <dpa_filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
DataProtectionApplicationCR 是否已成功创建。在示例输出中,您可以看到status对象将type字段设置为Reconciled,status字段设置为"True"。该状态表示DataProtectionApplicationCR 已被成功创建。oc get dpa -o yaml
$ oc get dpa -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证备份存储位置(BSL)是否可用:
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 3s 15s true
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
BackupCR,如下例所示:备份 CR 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定要备份的应用程序的命名空间。
运行以下命令来创建
BackupCR:oc apply -f <backup_cr_filename>
$ oc apply -f <backup_cr_filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证备份对象是否处于
Completed阶段。如需了解更多详细信息,请参阅示例输出。oc describe backups.velero.io test-backup -n openshift-adp
$ oc describe backups.velero.io test-backup -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6. 安装 OADP 复制链接链接已复制到粘贴板!
4.6.1. 关于安装 OADP 复制链接链接已复制到粘贴板!
作为集群管理员,您可以通过安装 OADP Operator 来为数据保护(OADP)安装 OpenShift API。OADP Operator 安装 Velero 1.14。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作 Migration Toolkit for Containers Operator 的依赖项,且不能作为独立 Operator 提供。
要备份 Kubernetes 资源和内部镜像,必须将对象存储用作备份位置,如以下存储类型之一:
- Amazon Web Services
- Microsoft Azure
- Google Cloud Platform
- 多云对象网关
- IBM Cloud® Object Storage S3
- AWS S3 兼容对象存储,如 Multicloud 对象网关或 MinIO
您可以为每个单独的 OADP 部署在同一命名空间中配置多个备份存储位置。
除非另有指定,"NooBaa" 指的是提供轻量级对象存储的开源项目,而 "Multicloud Object Gateway (MCG) " 是指 NooBaa 的红帽发行版本。
如需有关 MCG 的更多信息,请参阅使用应用程序访问多云对象网关。
CloudStorage API(它自动为对象存储创建一个存储桶)只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
当使用 CloudStorage 对象,并希望 OADP 使用 CloudStorage API 自动创建 S3 存储桶以用作 BackupStorageLocation 时,CloudStorage API 只是一个技术预览功能。
CloudStorage API 支持通过指定一个现有的 S3 存储桶来手动创建 BackupStorageLocation 对象。自动创建 S3 存储桶的 CloudStorage API 目前只为 AWS S3 存储启用。
您可以使用快照或文件系统备份 (FSB) 备份持久性卷 (PV)。
要使用快照备份 PV,您必须有一个支持原生快照 API 或 Container Storage Interface(CSI)快照的云供应商,如以下云供应商之一:
- Amazon Web Services
- Microsoft Azure
- Google Cloud Platform
- 启用 CSI 快照的云供应商,如 OpenShift Data Foundation
如果要在 OCP 4.11 及之后的版本中使用 CSI 备份,请安装 OADP 1.1.x。
OADP 1.0.x 不支持 OCP 4.11 及更高版本上的 CSI 备份。OADP 1.0.x 包括 Velero 1.7.x,并需要 API 组 snapshot.storage.k8s.io/v1beta1,这在 OCP 4.11 及更高版本中不存在。
如果您的云供应商不支持快照,或者您的存储是 NFS,您可以在对象存储中使用文件系统备份对应用程序进行备份:Kopia 或 Restic 来备份应用程序。
您可以创建一个默认 Secret,然后安装数据保护应用程序。
4.6.1.1. AWS S3 兼容备份存储供应商 复制链接链接已复制到粘贴板!
OADP 与许多对象存储供应商兼容,用于不同的备份和恢复操作。一些对象存储供应商被完全支持,一些不被支持但可以正常工作,另外一些有已知的限制。
4.6.1.1.1. 支持的备份存储供应商 复制链接链接已复制到粘贴板!
通过 AWS 插件,以下 AWS S3 兼容对象存储供应商被 OADP 完全支持作为备份存储:
- MinIO
- 多云对象网关 (MCG)
- Amazon Web Services (AWS) S3
- IBM Cloud® Object Storage S3
- Ceph RADOS 网关 (Ceph 对象网关)
- Red Hat Container Storage
- Red Hat OpenShift Data Foundation
- Google Cloud Platform (GCP)
- Microsoft Azure
Google Cloud Platform (GCP) 和 Microsoft Azure 有自己的 Velero 对象存储插件。
4.6.1.1.2. 不支持的备份存储供应商 复制链接链接已复制到粘贴板!
通过 AWS 插件,以下 AWS S3 兼容对象存储供应商可以与 Velero 一起正常工作作为备份存储,但它们不被支持,且还没有经过红帽测试:
- Oracle Cloud
- DigitalOcean
- NooBaa,除非使用 Multicloud Object Gateway (MCG) 安装
- Tencent Cloud
- Quobyte
- Cloudian HyperStore
除非另有指定,"NooBaa" 指的是提供轻量级对象存储的开源项目,而 "Multicloud Object Gateway (MCG) " 是指 NooBaa 的红帽发行版本。
如需有关 MCG 的更多信息,请参阅使用应用程序访问多云对象网关。
4.6.1.1.3. 带有已知限制的备份存储供应商 复制链接链接已复制到粘贴板!
通过 AWS 插件,以下 AWS S3 兼容对象存储供应商可以与 Velero 搭配使用,但有一些已知的限制:
- Swift - 它可以作为备份存储的备份存储位置,但对于基于文件系统的卷备份和恢复,它与 Restic 不兼容。
如果您在 OpenShift Data Foundation 上为 MCG bucket backupStorageLocation 使用集群存储,请将 MCG 配置为外部对象存储。
将 MCG 配置为外部对象存储可能会导致备份不可用。
除非另有指定,"NooBaa" 指的是提供轻量级对象存储的开源项目,而 "Multicloud Object Gateway (MCG) " 是指 NooBaa 的红帽发行版本。
如需有关 MCG 的更多信息,请参阅使用应用程序访问多云对象网关。
流程
- 将 MCG 配置为外部对象存储,如为混合或多云添加存储资源中所述。
4.6.1.3. 关于 OADP 更新频道 复制链接链接已复制到粘贴板!
安装 OADP Operator 时,您可以选择更新频道。这个频道决定到您接收到的 OADP Operator 和 Velero 的哪些升级。您可以随时切换频道。
可用的更新频道如下:
-
stable 频道现已弃用。stable 频道包含
OADP.v1.1.z和自OADP.v1.0.z的更老版本的 OADPClusterServiceVersion的补丁 (z-stream 更新)。 - stable-1.0 频道已弃用,且不被支持。
- stable-1.1 频道已弃用,且不被支持。
- stable-1.2 频道已弃用,且不被支持。
-
stable-1.3 频道包含
OADP.v1.3.z,它是最新的 OADP 1.3ClusterServiceVersion。 -
stable-1.4 频道包含
OADP.v1.4.z,它是最新的 OADP 1.4ClusterServiceVersion。
如需更多信息,请参阅 OpenShift Operator 生命周期。
哪个更新频道适合您?
-
stable 频道现已弃用。如果您已使用 stable 频道,您可以继续从
OADP.v1.1.z获取更新。 - 选择 stable-1.y 更新频道来安装 OADP 1.y,并继续为其接收补丁。如果您选择此频道,您将收到版本 1.y.z 的所有 z-stream 补丁。
何时需要切换更新频道?
- 如果您安装了 OADP 1.y,且只想接收那个 y-stream 的补丁,则必须从 stable 更新频道切换到 stable-1.y 更新频道。然后,您将收到版本 1.y.z 的所有 z-stream 补丁。
- 如果您安装了 OADP 1.0,希望升级到 OADP 1.1,然后只接收 OADP 1.1 的补丁,则必须从 stable-1.0 更新频道切换到 stable-1.1 更新频道。然后,您将收到版本 1.1.z 的所有 z-stream 补丁。
- 如果您安装了 OADP 1.y,其 y 大于 0,并希望切换到 OADP 1.0,则必须卸载 OADP Operator,然后使用 stable-1.0 更新频道重新安装它。然后,您将收到 1.0.z 版本的所有 z-stream 补丁。
您无法通过切换更新频道从 OADP 1.y 切换到 OADP 1.0。您必须卸载 Operator,然后重新安装它。
4.6.1.4. 在多个命名空间中安装 OADP 复制链接链接已复制到粘贴板!
您可以将 OpenShift API for Data Protection (OADP) 安装到同一集群中的多个命名空间中,以便多个项目所有者可以管理自己的 OADP 实例。这个用例已通过文件系统备份 (FSB) 和 Container Storage Interface (CSI) 进行验证。
您可以根据本文档中包含的每个平台流程指定安装每个 OADP 实例,并有以下额外的要求:
- 同一集群中的所有 OADP 部署都必须相同版本,如 1.4.0。不支持在同一集群中安装 OADP 的不同版本。
-
每个 OADP 部署都必须具有一组唯一的凭证和唯一的
BackupStorageLocation配置。您还可以在同一命名空间中使用多个BackupStorageLocation配置。 - 默认情况下,每个 OADP 部署在不同的命名空间中都有集群级别的访问权限。OpenShift Container Platform 管理员需要仔细全面地检查潜在的影响,如不同时备份和恢复同一命名空间。
4.6.1.5. OADP 不支持备份数据 immutability 复制链接链接已复制到粘贴板!
从 OADP 1.3 开始,当目标对象存储配置了 immutability 选项时,备份可能无法按预期工作。 这些 immutability 选项由不同的名称引用,例如:
- S3 对象锁定
- 对象保留
- 存储桶版本控制
- Write Once Read Many (WORM) 存储桶
不支持的主要原因是,OADP 最初会将备份状态保存为 最终,然后再检查是否有仍在进行的异步操作。
在 OADP 1.3 之前的版本中,也不支持带有 immutability 配置的对象存储。您可能会遇到一些问题,即使备份可以正常工作。例如,当删除备份时,版本对象不会被删除。
根据具体供应商和配置,备份在某些情况下可能可以正常工作。
- AWS S3 服务支持备份,因为 S3 对象锁定仅适用于有版本的存储桶。您仍然可以更新新版本的对象数据。但是,当备份被删除时,对象的旧版本不会被删除。
- Azure Storage Blob 支持版本级别的 immutability 和容器级别的 immutability。在版本级别的情形中,数据 immutability 仍可在 OADP 中工作,但不能在容器级别工作。
- GCP Cloud 存储策略只支持存储桶级别的 immutability。因此,无法在 GCP 环境中实现它。
4.6.1.6. 基于收集到的数据的 Velero CPU 和内存要求 复制链接链接已复制到粘贴板!
以下建议基于在扩展和性能实验室中观察到的性能。备份和恢复资源可能会受到插件类型、备份或恢复所需的资源数量,以及与这些资源相关的持久性卷 (PV) 中包含的相应数据。
4.6.1.6.1. 配置的 CPU 和内存要求 复制链接链接已复制到粘贴板!
| 配置类型 | [1] 平均用量 | [2] 大使用 | resourceTimeouts |
|---|---|---|---|
| CSI | Velero: CPU- Request 200m, Limits 1000m 内存 - Request 256Mi, Limits 1024Mi | Velero: CPU- Request 200m, Limits 2000m 内存- Request 256Mi, Limits 2048Mi | N/A |
| Restic | [3] Restic: CPU- Request 1000m, Limits 2000m 内存 - Request 16Gi, Limits 32Gi | [4] Restic: CPU - Request 2000m, Limits 8000m 内存 - Request 16Gi, Limits 40Gi | 900m |
| [5] 数据 Mover | N/A | N/A | 10m - 平均使用 60m - 大型使用 |
- 平均使用 - 将这些设置用于大多数使用情况。
- 大型使用 - 使用这些设置进行大型使用情况,如大型 PV (500GB 使用情况)、多个命名空间(100+)或单个命名空间中的多个 pod (2000 pods+),以及对涉及大型数据集进行备份和恢复的最佳性能。
- Restic 资源使用量与数据的数量和数据类型对应。例如,许多小文件或大量数据都可能导致 Restic 使用大量资源。在 Velero 文档中 500m 是默认设置,但在我们的大多数测试中,我们认为 200m request 和 1000m limit 是比较适当的设置。如 Velero 文档中所述,除了环境限制外,具体的 CPU 和内存用量还取决于文件和目录的规模。
- 增加 CPU 会对改进备份和恢复时间有重大影响。
- Data Mover - Data Mover 默认 resourceTimeout 为 10m。我们的测试显示恢复大型 PV (500GB 使用量),需要将 resourceTimeout 增加到 60m。
本指南中列出的资源要求仅用于平均使用。对于大型用途,请按照上表所述调整设置。
4.6.1.6.2. 用于大用量的 NodeAgent CPU 复制链接链接已复制到粘贴板!
测试显示,在使用 OpenShift API for Data Protection (OADP) 时,增加 NodeAgent CPU 可以显著提高备份和恢复的时间。
您可以根据性能分析和首选项调整 OpenShift Container Platform 环境。当您使用 Kopia 进行文件系统备份时,在工作负载中使用 CPU 限制。
如果没有对 pod 使用 CPU 限制,则 pod 可以在可用时使用过量 CPU。如果指定了 CPU 限值,如果 pod 超过其限值,则 pod 可能会节流。因此,在 pod 中使用 CPU 限制被视为反模式。
确保准确指定 CPU 请求,以便 pod 能够利用过量 CPU。根据 CPU 请求而不是 CPU 限制,可以保证资源分配。
测试显示,在具有 20 个内核和 32 Gi 内存的环境中运行 Kopia,支持在跨多个命名空间或在一个命名空间中的 2000 个 pod 中对 100 GB 数据进行备份和恢复操作。在具有这样配置的环境中的测试中没有出现 CPU 限制或内存饱和的问题。
在某些环境中,您可能需要调整 Ceph MDS pod 资源以避免 pod 重启,当默认设置导致资源饱和时会出现这种情况。
有关如何在 Ceph MDS pod 中设置 pod 资源限制的更多信息,请参阅 更改 rook-ceph pod 上的 CPU 和内存资源。
4.6.2. 安装 OADP Operator 复制链接链接已复制到粘贴板!
您可以使用 Operator Lifecycle Manager (OLM) 在 OpenShift Container Platform 4.16 上安装 Data Protection (OADP) Operator 的 OpenShift API。
OADP Operator 安装 Velero 1.14。
先决条件
-
您必须以具有
cluster-admin权限的用户身份登录。
流程
- 在 OpenShift Container Platform Web 控制台中,点击 Operators → OperatorHub。
- 使用 Filter by keyword 字段查找 OADP Operator。
- 选择 OADP Operator 并点 Install。
-
点 Install 在
openshift-adp项目中安装 Operator。 - 点 Operators → Installed Operators 来验证安装。
4.6.2.1. OADP-Velero-OpenShift Container Platform 版本关系 复制链接链接已复制到粘贴板!
4.7. 使用 AWS S3 兼容存储配置 OADP 复制链接链接已复制到粘贴板!
4.7.1. 为 AWS S3 兼容存储的数据保护配置 OpenShift API 复制链接链接已复制到粘贴板!
您可以通过安装 OADP Operator,使用 Amazon Web Services (AWS) S3 兼容存储安装 OpenShift API for Data Protection (OADP)。Operator 安装 Velero 1.14。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作 Migration Toolkit for Containers Operator 的依赖项,且不能作为独立 Operator 提供。
您可以为 Velero 配置 AWS,创建一个默认 Secret,然后安装数据保护应用程序。如需了解更多详细信息,请参阅安装 OADP Operator。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
Amazon Simple Storage Service (Amazon S3)是 Amazon 用于互联网的存储解决方案。作为授权用户,您可以使用该服务根据需要从 web 上的任何位置存储和检索任何数量的数据。
您可以使用 AWS Identity and Access Management (IAM) web 服务安全地控制对 Amazon S3 和其他 Amazon 服务的访问。
您可以使用 IAM 来管理控制用户可以访问哪些 AWS 资源的权限。您可以使用 IAM 验证,或者验证用户是否是要声明的身份,并授权或使用资源的权限。
AWS GovCloud (US) 是一个 Amazon 存储解决方案,用于满足美国联邦政府特定的数据安全要求。AWS GovCloud (US )的工作方式与 Amazon S3 相同,但以下情况除外:
- 您不能将 AWS GovCloud (US)区域中的 Amazon S3 存储桶的内容直接复制到另一个 AWS 区域。
如果您使用 Amazon S3 策略,请使用 AWS GovCloud (US) Amazon Resource Name (ARN)标识符来在所有 AWS 中取消指定资源,如 IAM 策略、Amazon S3 存储桶名称和 API 调用。
在 AWS GovCloud (US) 区域,ARN 有一个与其它标准 AWS 区域中的标识符不同的标识符
arn:aws-us-gov。如果您需要指定 US-West 或 US-East 区域,请使用以下 ARN:-
对于 US-West,请使用
us-gov-west-1。 -
对于 US-East,请使用
us-gov-east-1。
-
对于 US-West,请使用
-
对于所有其他标准区域,ARN 以
arn:aws开头。
- 在 AWS GovCloud (US) 区域,使用 Amazon Simple Storage Service endpoints and quotas 中的 "Amazon S3 endpoints" 表中的 AWS GovCloud (US-East) AWS GovCloud (US-West) 行中列出的端点。如果您要处理导出控制的数据,请使用 SSL/TLS 端点之一。如果您有 FIPS 要求,请使用 FIPS 140-2 端点,如 https://s3-fips.us-gov-west-1.amazonaws.com 或 https://s3-fips.us-gov-east-1.amazonaws.com。
- 要查找其他 AWS 的限制,请参阅 How Amazon Simple Storage Service Differs for AWS GovCloud (US)。
4.7.1.2. 配置 Amazon Web Services 复制链接链接已复制到粘贴板!
您可以为 OpenShift API 配置 Amazon Web Services(AWS)以进行数据保护(OADP)。
先决条件
- 已安装 AWS CLI。
流程
设置
BUCKET变量:BUCKET=<your_bucket>
$ BUCKET=<your_bucket>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置
REGION变量:REGION=<your_region>
$ REGION=<your_region>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 AWS S3 存储桶:
aws s3api create-bucket \ --bucket $BUCKET \ --region $REGION \ --create-bucket-configuration LocationConstraint=$REGION$ aws s3api create-bucket \ --bucket $BUCKET \ --region $REGION \ --create-bucket-configuration LocationConstraint=$REGION1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
us-east-1不支持LocationConstraint。如果您的区域是us-east-1,忽略--create-bucket-configuration LocationConstraint=$REGION。
创建一个 IAM 用户:
aws iam create-user --user-name velero
$ aws iam create-user --user-name velero1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果要使用 Velero 备份具有多个 S3 存储桶的集群,请为每个集群创建一个唯一用户名。
创建
velero-policy.json文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 附加策略,为
velero用户提供所需的最低权限:aws iam put-user-policy \ --user-name velero \ --policy-name velero \ --policy-document file://velero-policy.json
$ aws iam put-user-policy \ --user-name velero \ --policy-name velero \ --policy-document file://velero-policy.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为
velero用户创建访问密钥:aws iam create-access-key --user-name velero
$ aws iam create-access-key --user-name veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
credentials-velero文件:cat << EOF > ./credentials-velero [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> EOF
$ cat << EOF > ./credentials-velero [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在安装数据保护应用程序前,您可以使用
credentials-velero文件为 AWS 创建Secret对象。
4.7.1.3. 关于备份和恢复位置及其 secret 复制链接链接已复制到粘贴板!
您可以在 DataProtectionApplication 自定义资源(CR)中指定备份和快照位置及其 secret。
备份位置
您可以将以下 AWS S3 兼容对象存储解决方案之一指定为备份位置:
- 多云对象网关 (MCG)
- 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.7.1.3.1. 创建默认 Secret 复制链接链接已复制到粘贴板!
如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret。
Secret 的默认名称为 cloud-credentials。
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.7.1.3.2. 为不同凭证创建配置集 复制链接链接已复制到粘贴板!
如果您的备份和快照位置使用不同的凭证,您可以在 credentials-velero 文件中创建单独的配置集。
然后,您可以创建一个 Secret 对象并在 DataProtectionApplication 自定义资源(CR)中指定配置集。
流程
使用备份和快照位置的独立配置集创建一个
credentials-velero文件,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
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-velero1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
DataProtectionApplicationCR 中添加配置集,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7.1.3.3. 使用 AWS 配置备份存储位置 复制链接链接已复制到粘贴板!
您可以配置 AWS 备份存储位置 (BSL),如下例所示。
先决条件
- 已使用 AWS 创建对象存储桶。
- 已安装 OADP Operator。
流程
使用适合您用例的值配置 BSL 自定义资源 (CR)。
备份存储位置
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1 1
- 对象存储插件的名称。在本例中,插件是
aws。此字段是必需的。 - 2
- 在其中存储备份的存储桶的名称。此字段是必需的。
- 3
- 在其中存储备份的存储桶的前缀。此字段是可选的。
- 4
- 备份存储位置的凭证。您可以设置自定义凭证。如果没有设置自定义凭证,则使用默认凭证的 secret。
- 5
- secret 凭证数据中的
密钥。 - 6
- 包含凭证的 secret 名称。
- 7
- 存储桶所在的 AWS 区域。如果 s3ForcePathStyle 为 false,则可选。
- 8
- 决定是否使用路径风格寻址而不是虚拟托管存储桶寻址的布尔值标志。如果使用存储服务,如 MinIO 或 NooBaa,则设置为
true。这是可选字段。默认值为false。 - 9
- 您可以在此处显式指定 AWS S3 URL。此字段主要用于存储服务,如 MinIO 或 NooBaa。这是可选字段。
- 10
- 此字段主要用于存储服务,如 MinIO 或 NooBaa。这是可选字段。
- 11
- 用于上传对象的服务器端加密算法的名称,如
AES256。这是可选字段。 - 12
- 指定 AWS KMS 密钥 ID。您可以格式化示例所示,如别名,如
alias/<KMS-key-alias-name>,或完整ARN,以启用存储在 S3 中的备份加密。请注意kmsKeyId无法用于customerKeyEncryptionFile。这是可选字段。 - 13
- 指定具有
SSE-C客户密钥的文件,以启用存储在 S3 中的备份的客户密钥加密。该文件必须包含一个 32 字节的字符串。customerKeyEncryptionFile字段指向velero容器中挂载的 secret。将以下“键-值”对添加到velerocloud-credentialssecret:customer-key: <your_b64_encoded_32byte_string>.请注意,customerKeyEncryptionFile字段不能与kmsKeyId字段一起使用。默认值为一个空字符串(""),这代表SSE-C被禁用。这是可选字段。 - 14
- 用于创建签名 URL 的签名算法版本。您可以使用签名的 URL 来下载备份或获取日志。有效值为
1和4。默认版本为4。这是可选字段。 - 15
- 凭证文件中的 AWS 配置集的名称。默认值为
default。这是可选字段。 - 16
- 如果您不想在连接到对象存储时验证 TLS 证书,例如,使用 MinIO 的自签名证书,请将
insecureSkipTLSVerify字段设置为true。将其设置为true容易受到中间人攻击的影响,不建议在生产环境工作负载中使用。默认值为false。这是可选字段。 - 17
- 如果要将凭据文件作为共享配置文件加载,请将
enableSharedConfig字段设置为true。默认值为false。这是可选字段。 - 18
- 指定要注解 AWS S3 对象的标签。以键值对的形式指定标签。默认值为一个空字符串 (
"")。这是可选字段。 - 19
- 指定用于上传对象到 S3 的校验和算法。支持的值包括:
CRC32,CRC32C,SHA1, 和SHA256。如果将字段设置为空字符串 (""),则会跳过 checksum 检查。默认值为CRC32。这是可选字段。
4.7.1.3.4. 创建 OADP SSE-C 加密密钥以提供额外的数据安全性 复制链接链接已复制到粘贴板!
Amazon Web Services (AWS) S3 应用 Amazon S3 管理密钥(SSE-S3)的服务器端加密,作为 Amazon S3 中每个 bucket 的基本加密级别。
OpenShift API for Data Protection (OADP) 在将数据从集群传输到存储时使用 SSL/TLS、HTTPS 和 velero-repo-credentials secret 来加密数据。要在丢失了 AWS 凭证或 AWS 凭证被盗用时保护备份数据,请使用额外的加密层。
velero-plugin-for-aws 插件提供了几个额外的加密方法。您应该查看其配置选项,并考虑实施其他加密。
您可以在客户提供的密钥(SSE-C)中使用服务器端加密来存储自己的加密密钥。如果您的 AWS 凭证被公开,此功能会提供额外的安全性。
确保以安全的方式存储加密密钥。如果没有加密密钥,则无法恢复加密的数据和备份。
先决条件
要使 OADP 将一个包含了您的 SSE-C 密钥的 secret 挂载到 Velero pod(位于
/credentials),为 AWS 使用以下默认 secret 名称:cloud-credentials,并至少将以下标签之一留空:-
dpa.spec.backupLocations[].velero.credential dpa.spec.snapshotLocations[].velero.credential这是对一个已知问题的临时解决方案:https://issues.redhat.com/browse/OADP-3971。
-
以下流程包含了一个没有指定凭证的 spec:backupLocations 块的示例。本例会触发 OADP secret 挂载。
-
如果您需要备份位置带有不是名为
cloud-credentials的凭证,则需要添加一个快照位置,如以下示例中的凭证,它没有包含凭证名称。由于示例没有包含凭证名称,快照位置将使用cloud-credentials作为其执行快照的 secret。
没有指定凭证的 DPA 中的快照位置示例
流程
创建 SSE-C 加密密钥:
运行以下命令,生成随机数字并将其保存为名为
sse.key的文件:dd if=/dev/urandom bs=1 count=32 > sse.key
$ dd if=/dev/urandom bs=1 count=32 > sse.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建一个 OpenShift Container Platform secret:
如果您在初始安装和配置 OADP,同时创建 AWS 凭证和加密密钥 secret,请运行以下命令:
oc create secret generic cloud-credentials --namespace openshift-adp --from-file cloud=<path>/openshift_aws_credentials,customer-key=<path>/sse.key
$ oc create secret generic cloud-credentials --namespace openshift-adp --from-file cloud=<path>/openshift_aws_credentials,customer-key=<path>/sse.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要更新一个现有的安装,编辑
DataProtectionApplicationCR 清单的cloud-credentialsecret块的值,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
编辑
DataProtectionApplicationCR 清单的backupLocations块中customerKeyEncryptionFile属性的值,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告您必须重启 Velero pod,以便在现有安装中正确重新挂载 secret 凭证。
在安装完成后,您可以备份和恢复 OpenShift Container Platform 资源。在 AWS S3 存储中保存的数据使用新密钥加密,您无法在没有额外加密密钥的情况下从 AWS S3 控制台或 API 下载。
验证
要验证在没有包含额外密钥的情况下无法下载加密文件,请创建一个测试文件,上传该文件,然后尝试下载该文件。
运行以下命令来创建测试文件:
echo "encrypt me please" > test.txt
$ echo "encrypt me please" > test.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来上传测试文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 尝试下载文件。在 Amazon Web 控制台或终端中运行以下命令:
s3cmd get s3://<bucket>/test.txt test.txt
$ s3cmd get s3://<bucket>/test.txt test.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 下载失败,因为文件使用了附加的密钥进行加密。
运行以下命令,下载带有额外加密密钥的文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来读取文件内容:
cat downloaded.txt
$ cat downloaded.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
encrypt me please
encrypt me pleaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7.1.3.4.1. 下载带有由 Velero 备份的、带有 SSE-C 加密密钥的文件 复制链接链接已复制到粘贴板!
当您验证 SSE-C 加密密钥时,您也可以下载带有额外的加密密钥的由 Velero 备份的文件。
流程
- 运行以下命令,下载使用 Velero 备份的、带有额外加密密钥的文件:
4.7.1.4. 配置数据保护应用程序 复制链接链接已复制到粘贴板!
您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。
4.7.1.4.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.7.1.4.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.7.1.4.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" /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.7.1.5. 安装数据保护应用程序 复制链接链接已复制到粘贴板!
您可以通过创建 DataProtectionApplication API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
-
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials的Secret。 如果备份和快照位置使用不同的凭证,则必须使用默认名称
cloud-credentials创建一个Secret,其中包含备份和快照位置凭证的独立配置集。注意如果您不想在安装过程中指定备份或快照位置,您可以使用空
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插件是必需的。- 3
- 指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
- 4
- 将管理请求路由到服务器的管理代理。
- 5
- 如果要启用
nodeAgent并执行文件系统备份,则将此值设置为true。 - 6
- 输入
kopia或restic作为您的上传者。您不能在安装后更改选择。对于 Built-in DataMover,您必须使用 Kopia。nodeAgent部署守护进程集,这意味着nodeAgentpod 在每个工作节点上运行。您可以通过在BackupCR 中添加spec.defaultVolumesToFsBackup: true来配置文件系统备份。 - 7
- 指定 Kopia 或 Restic 可用的节点。默认情况下,Kopia 或 Restic 在所有节点上运行。
- 8
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 9
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如
velero。 - 10
- 指定是否为 S3 对象强制路径风格 URL (Boolean)。AWS S3 不需要。只适用于 S3 兼容存储。
- 11
- 指定您用于存储备份的对象存储的 URL。AWS S3 不需要。只适用于 S3 兼容存储。
- 12
- 指定您创建的
Secret对象的名称。如果没有指定这个值,则使用默认值cloud-credentials。如果您指定了自定义名称,则使用自定义名称进行备份位置。 - 13
- 指定快照位置,除非您使用 CSI 快照或文件系统备份 (FSB)备份 PV。
- 14
- 快照位置必须与 PV 位于同一区域。
- 15
- 指定您创建的
Secret对象的名称。如果没有指定这个值,则使用默认值cloud-credentials。如果指定了自定义名称,则自定义名称用于快照位置。如果您的备份和快照位置使用不同的凭证,您可以在credentials-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.7.1.5.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.7.1.6. 使用 MD5 checksum 算法配置备份存储位置 复制链接链接已复制到粘贴板!
您可以在数据保护应用程序(DPA)中配置 Backup Storage Location (BSL),为 Amazon Simple Storage Service (Amazon S3)和 S3 兼容存储供应商使用 MD5 checksum 算法。checksum 算法计算校验和,以在 Amazon S3 中上传和下载对象。您可以使用以下选项之一,设置 DPA 的 spec.backupLocations.velero.config.checksumAlgorithm 部分中的 checksumAlgorithm 字段。
-
CRC32 -
CRC32C -
SHA1 -
SHA256
您还可以将 checksumAlgorithm 字段设置为空值来跳过 MD5 checksum 检查。
如果没有为 checksumAlgorithm 字段设置值,则默认值为 CRC32。
先决条件
- 已安装 OADP Operator。
- 您已将 Amazon S3 或 S3 兼容对象存储配置为备份位置。
流程
在 DPA 中配置 BSL,如下例所示:
数据保护应用程序示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定
checksumAlgorithm。在本例中,checksumAlgorithm字段被设置为一个空值。您可以从以下列表中选择一个选项:CRC32,CRC32C,SHA1,SHA256。
如果您使用 Noobaa 作为对象存储供应商,并且没有在 DPA 中设置 spec.backupLocations.velero.config.checksumAlgorithm 字段,则值为空的 checksumAlgorithm 会添加到 BSL 配置中。
空值只为使用 DPA 创建的 BSL 添加。如果您使用任何其他方法创建 BSL,则不会添加这个值。
4.7.1.7. 使用客户端 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.7.1.8. 覆盖 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.7.1.9. 使用多个 BSL 配置 DPA 复制链接链接已复制到粘贴板!
您可以使用多个 BackupStorageLocation (BSL) CR 配置 DataProtectionApplication (DPA) 自定义资源 (CR),并指定云供应商提供的凭证。
例如,在配置了以下两个 BSLs 时:
- 在 DPA 中配置了一个 BSL,并将它设置为默认的 BSL。
-
使用
BackupStorageLocationCR 独立创建另一个 BSL。
因为您已通过 DPA 创建 BSL 作为默认值,您无法再次设置独立创建的 BSL 作为默认值。这意味着,在任何给定时间,您只能将一个 BSL 设置为默认的 BSL。
先决条件
- 您必须安装 OADP Operator。
- 您必须使用云供应商提供的凭证创建 secret。
流程
使用多个
BackupStorageLocationCR 配置DataProtectionApplicationCR。请参见以下示例:DPA 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指定要在备份 CR 中使用的 BSL。请参见以下示例。
备份 CR 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7.1.9.1. 在 DataProtectionApplication CR 中启用 CSI 复制链接链接已复制到粘贴板!
您可以在 DataProtectionApplication 自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
流程
编辑
DataProtectionApplicationCR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加
csi默认插件。
4.7.1.9.2. 在 DataProtectionApplication 中禁用节点代理 复制链接链接已复制到粘贴板!
如果您没有在备份中使用 Restic、Kopia 或 DataMover,您可以在 DataProtectionApplication 自定义资源(CR)中禁用 nodeAgent 字段。在禁用 nodeAgent 前,请确保 OADP Operator 闲置且没有运行任何备份。
流程
您可以设置一个作业来启用和禁用 DataProtectionApplication CR 中的 nodeAgent 字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。
4.8. 使用 IBM Cloud 配置 OADP 复制链接链接已复制到粘贴板!
4.8.1. 为 IBM Cloud 配置 OpenShift API for Data Protection 复制链接链接已复制到粘贴板!
您可以在 IBM Cloud 集群上安装 OpenShift API for Data Protection (OADP) Operator,以便在集群上备份和恢复应用程序。您可以配置 IBM Cloud Object Storage (COS)来存储备份。
4.8.1.1. 配置 COS 实例 复制链接链接已复制到粘贴板!
您可以创建一个 IBM Cloud Object Storage (COS) 实例来存储 OADP 备份数据。创建 COS 实例后,配置 HMAC 服务凭据。
先决条件
- 您有一个 IBM Cloud Platform 帐户。
- 已安装 IBM Cloud CLI。
- 登录到 IBM Cloud。
流程
运行以下命令来安装 IBM Cloud Object Storage (COS) 插件:
ibmcloud plugin install cos -f
$ ibmcloud plugin install cos -fCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来设置存储桶名称:
BUCKET=<bucket_name>
$ BUCKET=<bucket_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来设置存储桶区域:
REGION=<bucket_region>
$ REGION=<bucket_region>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定存储桶区域,如
eu-gb。
运行以下命令来创建资源组:
ibmcloud resource group-create <resource_group_name>
$ ibmcloud resource group-create <resource_group_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来设置目标资源组:
ibmcloud target -g <resource_group_name>
$ ibmcloud target -g <resource_group_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证目标资源组是否已正确设置:
ibmcloud target
$ ibmcloud targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
API endpoint: https://cloud.ibm.com Region: User: test-user Account: Test Account (fb6......e95) <-> 2...122 Resource group: Default
API endpoint: https://cloud.ibm.com Region: User: test-user Account: Test Account (fb6......e95) <-> 2...122 Resource group: DefaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在示例输出中,资源组设置为
Default。运行以下命令来设置资源组名称:
RESOURCE_GROUP=<resource_group>
$ RESOURCE_GROUP=<resource_group>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定资源组名称,例如
"default"。
运行以下命令来创建 IBM Cloud
service-instance资源:ibmcloud resource service-instance-create \ <service_instance_name> \ <service_name> \ <service_plan> \ <region_name>
$ ibmcloud resource service-instance-create \ <service_instance_name> \1 <service_name> \2 <service_plan> \3 <region_name>4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
ibmcloud resource service-instance-create test-service-instance cloud-object-storage \ standard \ global \ -d premium-global-deployment
$ ibmcloud resource service-instance-create test-service-instance cloud-object-storage \1 standard \ global \ -d premium-global-deployment2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来提取服务实例 ID:
SERVICE_INSTANCE_ID=$(ibmcloud resource service-instance test-service-instance --output json | jq -r '.[0].id')
$ SERVICE_INSTANCE_ID=$(ibmcloud resource service-instance test-service-instance --output json | jq -r '.[0].id')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 COS 存储桶:
ibmcloud cos bucket-create \// --bucket $BUCKET \// --ibm-service-instance-id $SERVICE_INSTANCE_ID \// --region $REGION
$ ibmcloud cos bucket-create \// --bucket $BUCKET \// --ibm-service-instance-id $SERVICE_INSTANCE_ID \// --region $REGIONCopy to Clipboard Copied! Toggle word wrap Toggle overflow $BUCKET,$SERVICE_INSTANCE_ID, 和$REGION等值会被您在前面设置的值替代。运行以下命令来创建
HMAC凭据。ibmcloud resource service-key-create test-key Writer --instance-name test-service-instance --parameters {\"HMAC\":true}$ ibmcloud resource service-key-create test-key Writer --instance-name test-service-instance --parameters {\"HMAC\":true}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从
HMAC凭证中提取访问密钥 ID 和 secret 访问密钥,并将它们保存到credentials-velero文件中。您可以使用credentials-velero文件为备份存储位置创建secret。运行以下命令:cat > credentials-velero << __EOF__ [default] aws_access_key_id=$(ibmcloud resource service-key test-key -o json | jq -r '.[0].credentials.cos_hmac_keys.access_key_id') aws_secret_access_key=$(ibmcloud resource service-key test-key -o json | jq -r '.[0].credentials.cos_hmac_keys.secret_access_key') __EOF__
$ cat > credentials-velero << __EOF__ [default] aws_access_key_id=$(ibmcloud resource service-key test-key -o json | jq -r '.[0].credentials.cos_hmac_keys.access_key_id') aws_secret_access_key=$(ibmcloud resource service-key test-key -o json | jq -r '.[0].credentials.cos_hmac_keys.secret_access_key') __EOF__Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.1.2. 创建默认 Secret 复制链接链接已复制到粘贴板!
如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret。
DataProtectionApplication 自定义资源(CR)需要一个默认的 Secret。否则,安装将失败。如果没有指定备份位置 Secret 的名称,则会使用默认名称。
如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero 文件创建带有默认名称的 Secret。
先决条件
- 您的对象存储和云存储(若有)必须使用相同的凭证。
- 您必须为 Velero 配置对象存储。
流程
-
为您的云供应商为备份存储位置创建一个
credentials-velero文件。 使用默认名称创建
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.8.1.3. 为不同凭证创建 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.8.1.4. 安装数据保护应用程序 复制链接链接已复制到粘贴板!
您可以通过创建 DataProtectionApplication API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials的Secret。注意如果您不想在安装过程中指定备份或快照位置,您可以使用空
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 - 点 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.8.1.5. 设置 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 和内存要求。
4.8.1.6. 配置节点代理和节点标签 复制链接链接已复制到粘贴板!
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.8.1.7. 使用客户端 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.8.1.8. 覆盖 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.8.1.9. 使用多个 BSL 配置 DPA 复制链接链接已复制到粘贴板!
您可以使用多个 BackupStorageLocation (BSL) CR 配置 DataProtectionApplication (DPA) 自定义资源 (CR),并指定云供应商提供的凭证。
例如,在配置了以下两个 BSLs 时:
- 在 DPA 中配置了一个 BSL,并将它设置为默认的 BSL。
-
使用
BackupStorageLocationCR 独立创建另一个 BSL。
因为您已通过 DPA 创建 BSL 作为默认值,您无法再次设置独立创建的 BSL 作为默认值。这意味着,在任何给定时间,您只能将一个 BSL 设置为默认的 BSL。
先决条件
- 您必须安装 OADP Operator。
- 您必须使用云供应商提供的凭证创建 secret。
流程
使用多个
BackupStorageLocationCR 配置DataProtectionApplicationCR。请参见以下示例:DPA 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指定要在备份 CR 中使用的 BSL。请参见以下示例。
备份 CR 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8.1.10. 在 DataProtectionApplication 中禁用节点代理 复制链接链接已复制到粘贴板!
如果您没有在备份中使用 Restic、Kopia 或 DataMover,您可以在 DataProtectionApplication 自定义资源(CR)中禁用 nodeAgent 字段。在禁用 nodeAgent 前,请确保 OADP Operator 闲置且没有运行任何备份。
流程
您可以设置一个作业来启用和禁用 DataProtectionApplication CR 中的 nodeAgent 字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。
4.9. 使用 Azure 配置 OADP 复制链接链接已复制到粘贴板!
4.9.1. 为 Microsoft Azure 的数据保护配置 OpenShift API 复制链接链接已复制到粘贴板!
您可以通过安装 OADP Operator,使用 Microsoft Azure 安装 OpenShift API for Data Protection (OADP)。Operator 安装 Velero 1.14。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作 Migration Toolkit for Containers Operator 的依赖项,且不能作为独立 Operator 提供。
您可以为 Velero 配置 Azure,创建一个默认 Secret,然后安装数据保护应用程序。如需了解更多详细信息,请参阅安装 OADP Operator。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.9.1.1. 配置 Microsoft Azure 复制链接链接已复制到粘贴板!
您可以为 OpenShift API 配置 Microsoft Azure for Data Protection (OADP)。
先决条件
- 已安装 Azure CLI。
使用 Azure 服务的工具应该始终具有受限权限,以确保 Azure 资源安全。因此,Azure 提供了服务主体,而不是以完全特权用户身份登录。Azure 服务主体是一个名称,可用于应用程序、托管服务或自动化工具。
此身份用于访问资源。
- 创建服务主体
- 使用服务主体和密码登录
- 使用服务主体和证书登录
- 管理服务主体角色
- 使用服务主体创建 Azure 资源
- 重置服务主体凭证
如需了解更多详细信息,请参阅使用 Azure CLI 创建 Azure 服务主体。
4.9.1.2. 关于备份和恢复位置及其 secret 复制链接链接已复制到粘贴板!
您可以在 DataProtectionApplication 自定义资源(CR)中指定备份和快照位置及其 secret。
备份位置
您可以将以下 AWS S3 兼容对象存储解决方案之一指定为备份位置:
- 多云对象网关 (MCG)
- 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.9.1.2.1. 创建默认 Secret 复制链接链接已复制到粘贴板!
如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret。
Secret 的默认名称为 cloud-credentials-azure。
DataProtectionApplication 自定义资源(CR)需要一个默认的 Secret。否则,安装将失败。如果没有指定备份位置 Secret 的名称,则会使用默认名称。
如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero 文件创建带有默认名称的 Secret。
先决条件
- 您的对象存储和云存储(若有)必须使用相同的凭证。
- 您必须为 Velero 配置对象存储。
流程
为您的云供应商为备份存储位置创建一个
credentials-velero文件。请参见以下示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用默认名称创建
Secret自定义资源(CR):oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials-azure -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.9.1.2.2. 为不同凭证创建 secret 复制链接链接已复制到粘贴板!
如果您的备份和恢复位置使用不同的凭证,您必须创建两个 Secret 对象:
-
具有自定义名称的备份位置
Secret。自定义名称在DataProtectionApplication自定义资源(CR)的spec.backupLocations块中指定。 -
带有默认名称
cloud-credentials-azure的快照位置Secret。此Secret不在DataProtectionApplicationCR 中指定。
流程
-
为您的云供应商为快照位置创建一个
credentials-velero文件。 使用默认名称为快照位置创建
Secret:oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials-azure -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.9.1.3. 配置数据保护应用程序 复制链接链接已复制到粘贴板!
您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。
4.9.1.3.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.9.1.3.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.9.1.3.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" /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.9.1.4. 安装数据保护应用程序 复制链接链接已复制到粘贴板!
您可以通过创建 DataProtectionApplication API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials-azure的Secret。注意如果您不想在安装过程中指定备份或快照位置,您可以使用空
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插件是必需的。- 3
- 指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
- 4
- 将管理请求路由到服务器的管理代理。
- 5
- 如果要启用
nodeAgent并执行文件系统备份,则将此值设置为true。 - 6
- 输入
kopia或restic作为您的上传者。您不能在安装后更改选择。对于 Built-in DataMover,您必须使用 Kopia。nodeAgent部署守护进程集,这意味着nodeAgentpod 在每个工作节点上运行。您可以通过在BackupCR 中添加spec.defaultVolumesToFsBackup: true来配置文件系统备份。 - 7
- 指定 Kopia 或 Restic 可用的节点。默认情况下,Kopia 或 Restic 在所有节点上运行。
- 8
- 指定 Azure 资源组。
- 9
- 指定 Azure 存储帐户 ID。
- 10
- 指定 Azure 订阅 ID。
- 11
- 如果没有指定这个值,则使用默认值
cloud-credentials-azure。如果您指定了自定义名称,则使用自定义名称进行备份位置。 - 12
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 13
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如
velero。 - 14
- 如果您使用 CSI 快照或 Restic 备份 PV,则不需要指定快照位置。
- 15
- 指定您创建的
Secret对象的名称。如果没有指定这个值,则使用默认值cloud-credentials-azure。如果您指定了自定义名称,则使用自定义名称进行备份位置。
- 点 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.9.1.5. 使用客户端 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.9.1.6. 覆盖 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.9.1.6.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.9.1.6.2. 在 DataProtectionApplication CR 中启用 CSI 复制链接链接已复制到粘贴板!
您可以在 DataProtectionApplication 自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
流程
编辑
DataProtectionApplicationCR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加
csi默认插件。
4.9.1.6.3. 在 DataProtectionApplication 中禁用节点代理 复制链接链接已复制到粘贴板!
如果您没有在备份中使用 Restic、Kopia 或 DataMover,您可以在 DataProtectionApplication 自定义资源(CR)中禁用 nodeAgent 字段。在禁用 nodeAgent 前,请确保 OADP Operator 闲置且没有运行任何备份。
流程
您可以设置一个作业来启用和禁用 DataProtectionApplication CR 中的 nodeAgent 字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。
4.10. 使用 GCP 配置 OADP 复制链接链接已复制到粘贴板!
4.10.1. 配置 OpenShift API 以进行 Google Cloud Platform 的数据保护 复制链接链接已复制到粘贴板!
您可以通过安装 OADP Operator,使用 Google Cloud Platform (GCP) 安装 OpenShift API for Data Protection (OADP)。Operator 安装 Velero 1.14。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作 Migration Toolkit for Containers Operator 的依赖项,且不能作为独立 Operator 提供。
您可以为 Velero 配置 GCP,创建一个默认 Secret,然后安装数据保护应用程序。如需了解更多详细信息,请参阅安装 OADP Operator。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.10.1.1. 配置 Google Cloud Platform 复制链接链接已复制到粘贴板!
对于数据保护(OADP),您可以为 OpenShift API 配置 Google Cloud Platform(GCP)。
先决条件
-
您必须安装了
gcloud和gsutilCLI 工具。详情请查看 Google 云文档。
流程
登录到 GCP:
gcloud auth login
$ gcloud auth loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 设置
BUCKET变量:BUCKET=<bucket>
$ BUCKET=<bucket>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定存储桶名称。
创建存储桶:
gsutil mb gs://$BUCKET/
$ gsutil mb gs://$BUCKET/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
PROJECT_ID变量设置为您的活跃项目:PROJECT_ID=$(gcloud config get-value project)
$ PROJECT_ID=$(gcloud config get-value project)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建服务帐户:
gcloud iam service-accounts create velero \ --display-name "Velero service account"$ gcloud iam service-accounts create velero \ --display-name "Velero service account"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出服务帐户:
gcloud iam service-accounts list
$ gcloud iam service-accounts listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 设置
SERVICE_ACCOUNT_EMAIL变量,使其与email值匹配:SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:Velero service account" \ --format 'value(email)')$ SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:Velero service account" \ --format 'value(email)')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 附加策略,为
velero用户提供所需的最低权限:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
velero.server自定义角色:gcloud iam roles create velero.server \ --project $PROJECT_ID \ --title "Velero Server" \ --permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"$ gcloud iam roles create velero.server \ --project $PROJECT_ID \ --title "Velero Server" \ --permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为项目添加 IAM 策略绑定:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role projects/$PROJECT_ID/roles/velero.server$ gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role projects/$PROJECT_ID/roles/velero.serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 IAM 服务帐户:
gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}$ gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 IAM 服务帐户的密钥保存到当前目录中的
credentials-velero文件中:gcloud iam service-accounts keys create credentials-velero \ --iam-account $SERVICE_ACCOUNT_EMAIL$ gcloud iam service-accounts keys create credentials-velero \ --iam-account $SERVICE_ACCOUNT_EMAILCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在安装 Data Protection Application 前,您可以使用
credentials-velero文件为 GCP 创建Secret对象。
4.10.1.2. 关于备份和恢复位置及其 secret 复制链接链接已复制到粘贴板!
您可以在 DataProtectionApplication 自定义资源(CR)中指定备份和快照位置及其 secret。
备份位置
您可以将以下 AWS S3 兼容对象存储解决方案之一指定为备份位置:
- 多云对象网关 (MCG)
- 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.10.1.2.1. 创建默认 Secret 复制链接链接已复制到粘贴板!
如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret。
Secret 的默认名称为 cloud-credentials-gcp。
DataProtectionApplication 自定义资源(CR)需要一个默认的 Secret。否则,安装将失败。如果没有指定备份位置 Secret 的名称,则会使用默认名称。
如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero 文件创建带有默认名称的 Secret。
先决条件
- 您的对象存储和云存储(若有)必须使用相同的凭证。
- 您必须为 Velero 配置对象存储。
流程
-
为您的云供应商为备份存储位置创建一个
credentials-velero文件。 使用默认名称创建
Secret自定义资源(CR):oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials-gcp -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.10.1.2.2. 为不同凭证创建 secret 复制链接链接已复制到粘贴板!
如果您的备份和恢复位置使用不同的凭证,您必须创建两个 Secret 对象:
-
具有自定义名称的备份位置
Secret。自定义名称在DataProtectionApplication自定义资源(CR)的spec.backupLocations块中指定。 -
带有默认名称
cloud-credentials-gcp的快照位置Secret。此Secret不在DataProtectionApplicationCR 中指定。
流程
-
为您的云供应商为快照位置创建一个
credentials-velero文件。 使用默认名称为快照位置创建
Secret:oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials-gcp -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.10.1.3. 配置数据保护应用程序 复制链接链接已复制到粘贴板!
您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。
4.10.1.3.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.10.1.3.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.10.1.3.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" /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.10.1.4. Google 工作负载身份联邦云身份验证 复制链接链接已复制到粘贴板!
在 Google Cloud 外部运行的应用程序使用服务帐户密钥(如用户名和密码)来访问 Google Cloud 资源。如果没有正确管理,则这些服务帐户密钥可能会成为安全风险。
使用 Google 的工作负载身份联邦,您可以使用 Identity and Access Management (IAM)提供 IAM 角色,包括模拟服务帐户到外部身份的功能。这消除了与服务帐户密钥相关的维护和安全风险。
工作负载联邦处理加密和解密证书、提取用户属性和验证。身份联邦对身份验证进行外部化,将其传递给安全令牌服务 (STS),并减少对各个开发人员的需求。授权和控制对资源的访问保持应用的职责。
Google 工作负载身份联邦可用于 OADP 1.3.x 及更新的版本。
在备份卷时,使用 Google 工作负载身份联邦身份验证的 GCP 上 OADP 仅支持 CSI 快照。
在带有 Google 工作负载身份联邦身份验证的 GCP 上的 OADP 不支持卷快照位置 (VSL) 备份。如需了解更多详细信息,请参阅 Google 工作负载身份联邦已知问题。
如果不使用 Google 工作负载身份联邦云身份验证,请继续安装数据保护应用程序。
先决条件
- 您已以手动模式安装集群,并配置了 GCP Workload Identity。
-
您可以访问 Cloud Credential Operator 实用程序 (
ccoctl) 以及关联的工作负载身份池。
流程
运行以下命令,创建一个
oadp-credrequest目录:mkdir -p oadp-credrequest
$ mkdir -p oadp-credrequestCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
CredentialsRequest.yaml文件,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用
ccoctl实用程序处理oadp-credrequest目录中的CredentialsRequest对象:Copy to Clipboard Copied! Toggle word wrap Toggle overflow manifests/openshift-adp-cloud-credentials-gcp-credentials.yaml文件现在可用于以下步骤。运行以下命令来创建命名空间:
oc create namespace <OPERATOR_INSTALL_NS>
$ oc create namespace <OPERATOR_INSTALL_NS>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将凭证应用到命名空间:
oc apply -f manifests/openshift-adp-cloud-credentials-gcp-credentials.yaml
$ oc apply -f manifests/openshift-adp-cloud-credentials-gcp-credentials.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.10.1.4.1. Google 工作负载身份联邦已知问题 复制链接链接已复制到粘贴板!
-
在配置了 GCP 工作负载身份联邦时,卷快照位置(VSL) 备份会以一个
PartiallyFailed阶段完成。Google 工作负载身份联邦身份验证不支持 VSL 备份。
4.10.1.5. 安装数据保护应用程序 复制链接链接已复制到粘贴板!
您可以通过创建 DataProtectionApplication API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials-gcp的Secret。注意如果您不想在安装过程中指定备份或快照位置,您可以使用空
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插件是必需的。- 3
- 指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
- 4
- 将管理请求路由到服务器的管理代理。
- 5
- 如果要启用
nodeAgent并执行文件系统备份,则将此值设置为true。 - 6
- 输入
kopia或restic作为您的上传者。您不能在安装后更改选择。对于 Built-in DataMover,您必须使用 Kopia。nodeAgent部署守护进程集,这意味着nodeAgentpod 在每个工作节点上运行。您可以通过在BackupCR 中添加spec.defaultVolumesToFsBackup: true来配置文件系统备份。 - 7
- 指定 Kopia 或 Restic 可用的节点。默认情况下,Kopia 或 Restic 在所有节点上运行。
- 8
- 包含凭证的 secret 密钥。对于 Google 工作负载身份联邦云身份验证,请使用
service_account.json。 - 9
- 包含凭证的 secret 名称。如果没有指定这个值,则使用默认值
cloud-credentials-gcp。 - 10
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 11
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如
velero。 - 12
- 指定快照位置,除非您使用 CSI 快照或 Restic 备份 PV。
- 13
- 快照位置必须与 PV 位于同一区域。
- 14
- 指定您创建的
Secret对象的名称。如果没有指定这个值,则使用默认值cloud-credentials-gcp。如果您指定了自定义名称,则使用自定义名称进行备份位置。 - 15
- Google 工作负载身份联邦支持内部镜像备份。如果您不想使用镜像备份,请将此字段设置为
false。
- 点 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.10.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.10.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.10.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.10.1.7.2. 在 DataProtectionApplication CR 中启用 CSI 复制链接链接已复制到粘贴板!
您可以在 DataProtectionApplication 自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
流程
编辑
DataProtectionApplicationCR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加
csi默认插件。
4.10.1.7.3. 在 DataProtectionApplication 中禁用节点代理 复制链接链接已复制到粘贴板!
如果您没有在备份中使用 Restic、Kopia 或 DataMover,您可以在 DataProtectionApplication 自定义资源(CR)中禁用 nodeAgent 字段。在禁用 nodeAgent 前,请确保 OADP Operator 闲置且没有运行任何备份。
流程
您可以设置一个作业来启用和禁用 DataProtectionApplication CR 中的 nodeAgent 字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。
4.11. 使用 MCG 配置 OADP 复制链接链接已复制到粘贴板!
4.11.1. 为使用多云对象网关的数据保护配置 OpenShift API 复制链接链接已复制到粘贴板!
Multicloud Object Gateway (MCG)是 OpenShift Data Foundation 的一个组件,您可以在 DataProtectionApplication 自定义资源(CR)中将其配置为备份位置。您可以通过安装 OADP Operator,使用 MCG 安装 OpenShift API for Data Protection (OADP)。Operator 安装 Velero 1.14。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作 Migration Toolkit for Containers Operator 的依赖项,且不能作为独立 Operator 提供。
CloudStorage API(它自动为对象存储创建一个存储桶)只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
您可以为备份位置创建一个 Secret CR,并安装数据保护应用程序。如需了解更多详细信息,请参阅安装 OADP Operator。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.11.1.1. 检索多云对象网关凭证 复制链接链接已复制到粘贴板!
您必须检索 Multicloud Object Gateway (MCG)存储桶凭证,以便为 OpenShift API 创建用于数据保护(OADP)的 Secret 自定义资源(CR)。
虽然 MCG Operator 已被弃用,但 MCG 插件仍可用于 OpenShift Data Foundation。要下载插件,请访问下载 Red Hat OpenShift Data Foundation,并为您的操作系统下载适当的 MCG 插件。
先决条件
- 请根据相关的 Red Hat OpenShift Data Foundation 部署指南部署 OpenShift Data Foundation。
流程
- 创建一个 MCG 存储桶。如需更多信息,请参阅管理混合和多资源。
-
通过在 bucket 资源上运行
oc describe命令,获取 S3 端点、AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY和存储桶名称。 创建
credentials-velero文件:cat << EOF > ./credentials-velero [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> EOF
$ cat << EOF > ./credentials-velero [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在安装数据保护应用程序时,您可以使用
credentials-velero文件创建Secret对象。
4.11.1.2. 关于备份和恢复位置及其 secret 复制链接链接已复制到粘贴板!
您可以在 DataProtectionApplication 自定义资源(CR)中指定备份和快照位置及其 secret。
备份位置
您可以将以下 AWS S3 兼容对象存储解决方案之一指定为备份位置:
- 多云对象网关 (MCG)
- 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.11.1.2.1. 创建默认 Secret 复制链接链接已复制到粘贴板!
如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret。
Secret 的默认名称为 cloud-credentials。
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.11.1.2.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
4.11.1.3. 配置数据保护应用程序 复制链接链接已复制到粘贴板!
您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。
4.11.1.3.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.11.1.3.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.11.1.3.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" /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.11.1.4. 安装数据保护应用程序 复制链接链接已复制到粘贴板!
您可以通过创建 DataProtectionApplication API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials的Secret。注意如果您不想在安装过程中指定备份或快照位置,您可以使用空
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 和 GCP 对象存储,需要azure或gcp插件。 - 3
openshift插件是必需的。- 4
- 指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
- 5
- 将管理请求路由到服务器的管理代理。
- 6
- 如果要启用
nodeAgent并执行文件系统备份,则将此值设置为true。 - 7
- 输入
kopia或restic作为您的上传者。您不能在安装后更改选择。对于 Built-in DataMover,您必须使用 Kopia。nodeAgent部署守护进程集,这意味着nodeAgentpod 在每个工作节点上运行。您可以通过在BackupCR 中添加spec.defaultVolumesToFsBackup: true来配置文件系统备份。 - 8
- 指定 Kopia 或 Restic 可用的节点。默认情况下,Kopia 或 Restic 在所有节点上运行。
- 9
- 按照对象存储服务器文档的命名约定,指定地区。
- 10
- 指定 S3 端点的 URL。
- 11
- 指定您创建的
Secret对象的名称。如果没有指定这个值,则使用默认值cloud-credentials。如果您指定了自定义名称,则使用自定义名称进行备份位置。 - 12
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 13
- 如果存储桶用于多个目的,请为 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.11.1.5. 使用客户端 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.11.1.6. 覆盖 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.11.1.6.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.11.1.6.2. 在 DataProtectionApplication CR 中启用 CSI 复制链接链接已复制到粘贴板!
您可以在 DataProtectionApplication 自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
流程
编辑
DataProtectionApplicationCR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加
csi默认插件。
4.11.1.6.3. 在 DataProtectionApplication 中禁用节点代理 复制链接链接已复制到粘贴板!
如果您没有在备份中使用 Restic、Kopia 或 DataMover,您可以在 DataProtectionApplication 自定义资源(CR)中禁用 nodeAgent 字段。在禁用 nodeAgent 前,请确保 OADP Operator 闲置且没有运行任何备份。
流程
您可以设置一个作业来启用和禁用 DataProtectionApplication CR 中的 nodeAgent 字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。
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 CR,并安装数据保护应用程序。如需了解更多详细信息,请参阅安装 OADP Operator。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.12.1.1. 关于备份和恢复位置及其 secret 复制链接链接已复制到粘贴板!
您可以在 DataProtectionApplication 自定义资源(CR)中指定备份和快照位置及其 secret。
备份位置
您可以将以下 AWS S3 兼容对象存储解决方案之一指定为备份位置:
- 多云对象网关 (MCG)
- 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 和内存要求 复制链接链接已复制到粘贴板!
以下建议基于在扩展和性能实验室中观察到的性能。更改与 Red Hat OpenShift Data Foundation (ODF) 相关。如果使用 ODF,请参阅相关的调优指南来了解官方的建议。
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" /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。注意如果您不想在安装过程中指定备份或快照位置,您可以使用空
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 和 GCP 对象存储,需要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。
4.12.1.5. 覆盖 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.12.1.5.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.5.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.5.4. 在 DataProtectionApplication 中禁用节点代理 复制链接链接已复制到粘贴板!
如果您没有在备份中使用 Restic、Kopia 或 DataMover,您可以在 DataProtectionApplication 自定义资源(CR)中禁用 nodeAgent 字段。在禁用 nodeAgent 前,请确保 OADP Operator 闲置且没有运行任何备份。
流程
您可以设置一个作业来启用和禁用 DataProtectionApplication CR 中的 nodeAgent 字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。
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-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
如果您在虚拟机重启后马上运行 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-adpCopy 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。
4.14. 使用多个备份存储位置配置 OADP 复制链接链接已复制到粘贴板!
4.14.1. 为带有多个备份存储位置的数据保护(OADP)配置 OpenShift API 复制链接链接已复制到粘贴板!
您可以在数据保护应用程序(DPA)中配置一个或多个备份存储位置(BSL)。在创建备份时,您还可以选择要将备份存储到的位置。使用这个配置,您可以使用以下方法存储备份:
- 到不同的区域
- 到不同的存储供应商
OADP 支持配置多个凭证来配置多个 BSL,以便您可以指定与任何 BSL 搭配使用的凭证。
4.14.1.1. 使用多个 BSL 配置 DPA 复制链接链接已复制到粘贴板!
您可以使用多个 BackupStorageLocation (BSL) CR 配置 DataProtectionApplication (DPA) 自定义资源 (CR),并指定云供应商提供的凭证。
例如,在配置了以下两个 BSLs 时:
- 在 DPA 中配置了一个 BSL,并将它设置为默认的 BSL。
-
使用
BackupStorageLocationCR 独立创建另一个 BSL。
因为您已通过 DPA 创建 BSL 作为默认值,您无法再次设置独立创建的 BSL 作为默认值。这意味着,在任何给定时间,您只能将一个 BSL 设置为默认的 BSL。
先决条件
- 您必须安装 OADP Operator。
- 您必须使用云供应商提供的凭证创建 secret。
流程
使用多个
BackupStorageLocationCR 配置DataProtectionApplicationCR。请参见以下示例:DPA 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指定要在备份 CR 中使用的 BSL。请参见以下示例。
备份 CR 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.14.1.2. 两个 BSLs 的 OADP 用例 复制链接链接已复制到粘贴板!
在这种情况下,您可以使用两个云凭证配置有两个存储位置的 DPA。您可以使用默认 BSL 备份带有数据库的应用程序。OADP 将备份资源存储在默认的 BSL 中。然后,您可以使用第二个 BSL 再次备份应用程序。
先决条件
- 您必须安装 OADP Operator。
- 您必须配置两个备份存储位置:AWS S3 和 Multicloud Object Gateway (MCG)。
- 您必须具有一个应用程序,其数据库部署在 Red Hat OpenShift 集群中。
流程
运行以下命令,使用默认名称为 AWS S3 存储供应商创建第一个
Secret:oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=<aws_credentials_file_name>
$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=<aws_credentials_file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定 AWS S3 的云凭证文件的名称。
运行以下命令,使用自定义名称为 MCG 创建第二个
Secret:oc create secret generic mcg-secret -n openshift-adp --from-file cloud=<MCG_credentials_file_name>
$ oc create secret generic mcg-secret -n openshift-adp --from-file cloud=<MCG_credentials_file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定 MCG 的云凭据文件的名称。记录
mcg-secret自定义 secret 的名称。
使用两个 BSLs 配置 DPA,如下例所示。
DPA 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 DPA:
oc create -f <dpa_file_name>
$ oc create -f <dpa_file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定您配置的 DPA 的文件名。
运行以下命令验证 DPA 是否已协调:
oc get dpa -o yaml
$ oc get dpa -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证 BSLs 是否可用:
oc get bsl
$ oc get bslCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT aws Available 5s 3m28s true mcg Available 5s 3m28s
NAME PHASE LAST VALIDATED AGE DEFAULT aws Available 5s 3m28s true mcg Available 5s 3m28sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用默认 BSL 创建备份 CR。
注意在以下示例中,在 backup CR 中没有指定
storageLocation字段。备份 CR 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定集群中安装的应用程序的命名空间。
运行以下命令来创建备份:
oc apply -f <backup_file_name>
$ oc apply -f <backup_file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定备份 CR 文件的名称。
运行以下命令,验证使用默认 BSL 的备份是否完成:
oc get backups.velero.io <backup_name> -o yaml
$ oc get backups.velero.io <backup_name> -o yaml1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定备份的名称。
使用 MCG 作为 BSL 创建备份 CR。在以下示例中,请注意,在创建备份 CR 时指定了第二个
storageLocation值。备份
CR示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建第二个备份:
oc apply -f <backup_file_name>
$ oc apply -f <backup_file_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定备份 CR 文件的名称。
运行以下命令,验证备份是否以 MCG 用户身份完成:
oc get backups.velero.io <backup_name> -o yaml
$ oc get backups.velero.io <backup_name> -o yaml1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定备份的名称。
4.15. 使用多个卷快照位置配置 OADP 复制链接链接已复制到粘贴板!
4.15.1. 使用多个卷快照位置为数据保护(OADP)配置 OpenShift API 复制链接链接已复制到粘贴板!
您可以配置一个或多个卷快照位置(VSL),将快照存储在不同的云供应商区域中。
4.15.1.1. 使用多个 VSL 配置 DPA 复制链接链接已复制到粘贴板!
您可以使用多个 VSL 配置 DPA,并指定云供应商提供的凭证。确保在与持久性卷相同的区域中配置快照位置。请参见以下示例。
DPA 示例
4.16. 卸载 OADP 复制链接链接已复制到粘贴板!
4.16.1. 为数据保护卸载 OpenShift API 复制链接链接已复制到粘贴板!
您可以通过删除 OADP Operator 来卸载 OpenShift API for Data Protection(OADP)。详情请参阅从集群中删除 Operator。
4.17. OADP 备份 复制链接链接已复制到粘贴板!
4.17.1. 备份应用程序 复制链接链接已复制到粘贴板!
频繁备份可能会消耗备份存储位置的存储。如果使用非本地备份,请检查备份、保留时间以及持久性卷(PV)的数据量的频率,如 S3 存储桶。因为所有生成的备份在过期前都会保留,因此还会检查调度的 TTL(time to live)设置。
您可以通过创建一个 Backup 自定义资源 (CR) 来备份应用程序。如需更多信息,请参阅创建备份 CR。以下是 Backup CR 的不同备份类型:
-
BackupCR 为 Kubernetes 资源和 S3 对象存储上的内部镜像创建备份文件。 - 如果您使用 Velero 的快照功能备份存储在持久性卷中的数据,则只有快照相关信息会与 Openshift 对象数据一起存储在 S3 存储桶中。
-
如果您的云供应商有原生快照 API 或支持 CSI 快照,则
BackupCR 通过创建快照来备份持久性卷 (PV)。有关使用 CSI 快照的更多信息,请参阅使用 CSI 快照备份持久性卷。
如果底层存储或备份存储桶是同一集群的一部分,则当出现灾难时数据可能会丢失。
有关 CSI 卷快照的更多信息,请参阅 CSI 卷快照。
CloudStorage API(它自动为对象存储创建一个存储桶)只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
当使用 CloudStorage 对象,并希望 OADP 使用 CloudStorage API 自动创建 S3 存储桶以用作 BackupStorageLocation 时,CloudStorage API 只是一个技术预览功能。
CloudStorage API 支持通过指定一个现有的 S3 存储桶来手动创建 BackupStorageLocation 对象。自动创建 S3 存储桶的 CloudStorage API 目前只为 AWS S3 存储启用。
- 如果您的云供应商不支持快照,或者应用程序位于 NFS 数据卷中,您可以使用 Kopia 或 Restic 创建备份。请参阅使用文件系统备份备份应用程序:Kopia 或 Restic。
…/.snapshot: read-only file system 错误
…/.snapshot 目录是一个快照复制目录,由多个 NFS 服务器使用。该目录默认具有只读访问权限,因此 Velero 无法恢复到这个目录中。
不要向 Velero 提供对 .snapshot 目录的写入权限,并禁用客户端对这个目录的访问。
OpenShift API for Data Protection (OADP) 不支持对由其他软件创建的卷快照进行备份。
4.17.1.1. 在运行备份和恢复前预览资源 复制链接链接已复制到粘贴板!
OADP 根据类型、命名空间或标签备份应用程序资源。这意味着您可以在备份完成后查看资源。同样,您可以在恢复操作完成后根据命名空间、持久性卷(PV)或标签查看恢复的对象。要提前预览资源,您可以空运行备份和恢复操作。
先决条件
- 已安装 OADP Operator。
流程
要在运行实际备份前预览备份中包含的资源,请运行以下命令:
velero backup create <backup-name> --snapshot-volumes false
$ velero backup create <backup-name> --snapshot-volumes false1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
--snapshot-volumes 参数的值指定为false。
要了解有关备份资源的更多详细信息,请运行以下命令:
velero describe backup <backup_name> --details
$ velero describe backup <backup_name> --details1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定备份的名称。
要在运行实际恢复前预览恢复中包含的资源,请运行以下命令:
velero restore create --from-backup <backup-name>
$ velero restore create --from-backup <backup-name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定为查看备份资源而创建的备份名称。
重要velero restore create命令在集群中创建恢复资源。在查看资源后,您必须删除作为恢复的一部分创建的资源。要了解有关恢复资源的更多详细信息,请运行以下命令:
velero describe restore <restore_name> --details
$ velero describe restore <restore_name> --details1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定恢复的名称。
您可以创建备份 hook,以便在备份操作之前或之后运行命令。请参阅创建备份 hook。
您可以通过创建一个 Schedule CR 而不是 Backup CR 来调度备份。请参阅使用 Schedule CR 调度备份。
4.17.1.2. 已知问题 复制链接链接已复制到粘贴板!
OpenShift Container Platform 4.16 强制执行一个 pod 安全准入 (PSA) 策略,该策略可能会在 Restic 恢复过程中阻止 pod 的就绪度。
这个问题已在 OADP 1.1.6 和 OADP 1.2.2 版本中解决,因此建议用户升级到这些版本。
如需更多信息,请参阅 因为更改了 PSA 策略,在 OCP 4.15 上进行 Restic 恢复部分失败。
4.17.2. 创建备份 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.velero.io -n openshift-adp
$ oc get backupstoragelocations.velero.io -n openshift-adpCopy 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 31mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
BackupCR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定要备份的命名空间数组。
- 2
- 可选:指定一个要包含在备份中的资源的数组。资源可以是缩写方式(例如,'po' 代表 'pods')或完全限定的方式。如果未指定,则会包含所有资源。
- 3
- 可选:指定要从备份中排除的资源数组。资源可以是缩写方式(例如,'po' 代表 'pods')或完全限定的方式。
- 4
- 指定
backupStorageLocationsCR 的名称。 - 5
ttl字段定义所创建的备份和备份数据的保留时间。例如,如果您使用 Restic 作为备份工具,则备份的持久性卷(PV)的数据项和数据内容会存储,直到备份过期为止。但是,存储这些数据会在目标备份位置消耗更多空间。频繁备份会使用额外的存储,即使在其他未过期的备份之前也会创建它们,这些存储可能会超时。- 6
- 具有所有指定标签的备份资源的 {key,value} 对映射。
- 7
- 具有一个或多个指定标签的备份资源的 {key,value} 对映射。
验证
BackupCR 的状态是否为Completed:oc get backups.velero.io -n openshift-adp <backup> -o jsonpath='{.status.phase}'$ oc get backups.velero.io -n openshift-adp <backup> -o jsonpath='{.status.phase}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.17.3. 使用 CSI 快照备份持久性卷 复制链接链接已复制到粘贴板!
在创建 Backup CR 前,您可以编辑云存储的 VolumeSnapshotClass 自定义资源(CR) 来使用 Container Storage Interface (CSI) 快照备份持久性卷,请参阅 CSI 卷快照。
如需更多信息,请参阅创建备份 CR。
先决条件
- 云供应商必须支持 CSI 快照。
-
您必须在
DataProtectionApplicationCR 中启用 CSI。
流程
将
metadata.labels.velero.io/csi-volumesnapshot-class: "true"键值对添加到VolumeSnapshotClassCR:配置文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
-
现在,您可以创建一个
BackupCR。
4.17.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。
-
您不能通过将
DataProtectionApplicationCR 中的spec.configuration.nodeAgent.enabletofalse来禁用默认的nodeAgent安装。 -
您必须在
DataProtectionApplicationCR 中将spec.configuration.nodeAgent.uploaderType设置为kopia或restic来选择 Kopia 或 Restic 作为 uploader。 -
DataProtectionApplicationCR 必须处于Ready状态。
流程
创建
BackupCR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在 OADP 版本 1.2 及更高版本中,在
spec块中添加defaultVolumesToFsBackup: true设置。在 OADP 版本 1.1 中,添加defaultVolumesToRestic: true。
4.17.5. 创建备份 hook 复制链接链接已复制到粘贴板!
在执行备份时,可以根据正在备份的 pod,指定在 pod 内要执行的一个或多个命令。
可将命令配置为在任何自定义操作处理(Pre hook)或所有自定义操作完成后执行,且由自定义操作指定的任何其他项目都已备份(Post hook)。
您可以通过编辑备份自定义资源(CR)来创建 Backup hook 以在 pod 中运行的容器中运行命令。
流程
在
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.17.6. 使用 Schedule CR 调度备份 复制链接链接已复制到粘贴板!
调度操作允许您在特定时间创建由 Cron 表达式指定的数据的备份。
您可以通过创建 Schedule 自定义资源(CR)而不是 Backup CR 来调度备份。
在您的备份调度中留有足够的时间,以便在创建另一个备份前完成了当前的备份。
例如,如果对一个命名空间进行备份通常需要 10 分钟才能完成,则调度的备份频率不应该超过每 15 分钟一次。
先决条件
- 您必须安装用于数据保护(OADP)Operator 的 OpenShift API。
-
DataProtectionApplicationCR 必须处于Ready状态。
流程
检索
backupStorageLocationsCR:oc get backupStorageLocations -n openshift-adp
$ oc get backupStorageLocations -n openshift-adpCopy 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 31mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
ScheduleCR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要以特定间隔调度备份,以以下格式输入
<duration_in_minutes>:schedule: "*/10 * * * *"
schedule: "*/10 * * * *"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在引号 (
" ") 之间输入分钟值。- 1
- 调度备份的
cron表达式,例如0 7 * * *代表在每天 7:00 执行备份。 - 2
- 要备份的命名空间数组。
- 3
backupStorageLocationsCR 的名称。- 4
- 可选:在 OADP 版本 1.2 及更高版本中,在使用 Restic 进行卷备份时,将
defaultVolumesToFsBackup: true键值对添加到您的配置中。在 OADP 版本 1.1 中,在使用 Restic 备份卷时添加defaultVolumesToRestic: true键值对。 - 5
ttl字段定义所创建的备份和备份数据的保留时间。例如,如果您使用 Restic 作为备份工具,则备份的持久性卷(PV)的数据项和数据内容会存储,直到备份过期为止。但是,存储这些数据会在目标备份位置消耗更多空间。频繁备份会使用额外的存储,即使在其他未过期的备份之前也会创建它们,这些存储可能会超时。
在调度的备份运行后验证
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.17.7. 删除备份 复制链接链接已复制到粘贴板!
您可以通过创建 DeleteBackupRequest 自定义资源 (CR) 或运行 velero backup delete 来删除备份(在以下介绍)。
根据备份的方法,卷备份工件会在不同的时间删除:
- Restic:在删除备份后,工件会在下一个完整的维护周期中删除。
- Container Storage Interface (CSI):当删除备份时,工件会被立即删除。
- Kopia:在删除备份后,工件会在 Kopia 存储库的三个完整维护周期后删除。
4.17.7.1. 通过创建 DeleteBackupRequest CR 来删除备份 复制链接链接已复制到粘贴板!
您可以通过创建一个 DeleteBackupRequest 自定义资源 (CR) 来删除备份。
先决条件
- 您已运行应用程序的备份。
流程
创建
DeleteBackupRequestCR 清单文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定备份的名称。
应用
DeleteBackupRequestCR 以删除备份:oc apply -f <deletebackuprequest_cr_filename>
$ oc apply -f <deletebackuprequest_cr_filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.17.7.2. 使用 Velero CLI 删除备份 复制链接链接已复制到粘贴板!
您可以使用 Velero CLI 删除备份。
先决条件
- 您已运行应用程序的备份。
- 下载 Velero CLI,并可以访问集群中的 Velero 二进制文件。
流程
要删除备份,请运行以下 Velero 命令:
velero backup delete <backup_name> -n openshift-adp
$ velero backup delete <backup_name> -n openshift-adp1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定备份的名称。
4.17.7.3. 关于 Kopia 仓库维护 复制链接链接已复制到粘贴板!
有两种 Kopia 存储库维护类型:
- 快速维护
- 每小时运行一次,以保持索引 Blob (n) 数量较低。大量索引对 Kopia 操作的性能会造成负面影响。
- 在没有确定存在同一元数据的另一个副本的情况下,请勿从仓库中删除任何元数据。
- 完整维护
- 每 24 小时运行一次,以对不再需要仓库内容进行垃圾回收处理。
-
snapshot-gc是一个完整的维护任务,它会找到所有无法从快照清单访问的文件和目录列表,并将其标记为已删除。 - 完整维护操作有较高的资源成不,因为它需要扫描集群中所有活跃的快照中的所有目录。
4.17.7.3.1. OADP 中的 Kopia 维护 复制链接链接已复制到粘贴板!
repo-maintain-job 作业是在安装 OADP 的命名空间中执行的,如下例所示:
pod/repo-maintain-job-173...2527-2nbls 0/1 Completed 0 168m pod/repo-maintain-job-173....536-fl9tm 0/1 Completed 0 108m pod/repo-maintain-job-173...2545-55ggx 0/1 Completed 0 48m
pod/repo-maintain-job-173...2527-2nbls 0/1 Completed 0 168m
pod/repo-maintain-job-173....536-fl9tm 0/1 Completed 0 108m
pod/repo-maintain-job-173...2545-55ggx 0/1 Completed 0 48m
您可以检查 repo-maintain-job 的日志,以了解清理以及在备份对象存储中删除工件的更多详情。当需要进行下一个完整维护时,您可以在 repo-maintain-job 中看到一个相关的信息,如下例所示:
not due for full maintenance cycle until 2024-00-00 18:29:4
not due for full maintenance cycle until 2024-00-00 18:29:4
将对象从备份对象存储中删除需要已成功执行了三个完整维护周期。这意味着,要删除备份对象存储中的所有工件,最多需要 72 小时。
4.17.7.4. 删除备份仓库 复制链接链接已复制到粘贴板!
在删除备份后,当 Kopia 仓库维护周期删除了相关工件后,备份不再被任何元数据或清单对象引用。然后,您可以删除 backuprepository 自定义资源 (CR) 来完成备份删除过程。
先决条件
- 您已删除应用程序的备份。
- 在备份被删除后,您需要最多等待 72 小时。在此期间 Kopia 可以运行仓库维护周期。
流程
要获取备份的备份仓库 CR 的名称,请运行以下命令:
oc get backuprepositories.velero.io -n openshift-adp
$ oc get backuprepositories.velero.io -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要删除备份仓库 CR,请运行以下命令:
oc delete backuprepository <backup_repository_name> -n openshift-adp
$ oc delete backuprepository <backup_repository_name> -n openshift-adp1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定上一步中备份仓库的名称。
4.17.8. 关于 Kopia 复制链接链接已复制到粘贴板!
Kopia 是一个快速安全的开源备份和恢复工具,可让您创建数据的加密快照,并将快照保存到您选择的远程或云存储中。
Kopia 支持网络和本地存储位置,以及许多云或远程存储位置,包括:
- Amazon S3 以及与 S3 兼容的任何云存储
- Azure Blob Storage
- Google Cloud Storage 平台
Kopia 对快照使用可内容访问的存储:
- 快照始终是以增量方式进行的;已包含在之前快照中的数据不会重新上传到存储库。仅当文件被修改时,文件才会再次上传到存储库。
- 存储的数据会被去除重复数据;如果存在同一文件的多个副本,则仅存储其中一个文件。
- 如果文件被移动或重命名,Kopia 可以识别它们具有相同的内容,且不会重新上传它们。
4.17.8.1. OADP 与 Kopia 集成 复制链接链接已复制到粘贴板!
除了 Restic 外,OADP 1.3 还支持 Kopia 作为 pod 卷备份的备份机制。您需要在安装时通过在 DataProtectionApplication 自定义资源(CR) 中设置 uploaderType 字段来选择其中一个。可能的值为 restic 或 kopia。如果没有指定 uploaderType,OADP 1.3 默认为使用 Kopia 作为备份机制。数据会从一个统一的存储库中读取或写入。
不支持使用 Kopia 客户端修改 Kopia 备份存储库,并可能会影响 Kopia 备份的完整性。OADP 不支持直接连接到 Kopia 存储库,且只能以最佳方式提供支持。
以下示例显示了配置了使用 Kopia 的 DataProtectionApplication CR:
4.18. OADP 恢复 复制链接链接已复制到粘贴板!
4.18.1. 恢复应用程序 复制链接链接已复制到粘贴板!
您可以通过创建一个 Restore 自定义资源 (CR) 来恢复应用程序备份。请参阅创建 Restore CR。
您可以通过编辑 Restore CR 创建恢复 hook,以便在 pod 中的容器中运行命令。请参阅创建恢复 hook。
4.18.1.1. 在运行备份和恢复前预览资源 复制链接链接已复制到粘贴板!
OADP 根据类型、命名空间或标签备份应用程序资源。这意味着您可以在备份完成后查看资源。同样,您可以在恢复操作完成后根据命名空间、持久性卷(PV)或标签查看恢复的对象。要提前预览资源,您可以空运行备份和恢复操作。
先决条件
- 已安装 OADP Operator。
流程
要在运行实际备份前预览备份中包含的资源,请运行以下命令:
velero backup create <backup-name> --snapshot-volumes false
$ velero backup create <backup-name> --snapshot-volumes false1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
--snapshot-volumes 参数的值指定为false。
要了解有关备份资源的更多详细信息,请运行以下命令:
velero describe backup <backup_name> --details
$ velero describe backup <backup_name> --details1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定备份的名称。
要在运行实际恢复前预览恢复中包含的资源,请运行以下命令:
velero restore create --from-backup <backup-name>
$ velero restore create --from-backup <backup-name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定为查看备份资源而创建的备份名称。
重要velero restore create命令在集群中创建恢复资源。在查看资源后,您必须删除作为恢复的一部分创建的资源。要了解有关恢复资源的更多详细信息,请运行以下命令:
velero describe restore <restore_name> --details
$ velero describe restore <restore_name> --details1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定恢复的名称。
4.18.1.2. 创建恢复 CR 复制链接链接已复制到粘贴板!
您可以通过创建一个 Restore CR 来恢复 Backup 自定义资源(CR)。
当您恢复使用 azurefile-csi 存储类的有状态应用程序时,恢复操作会保留在 Finalizing 阶段。
先决条件
- 您必须安装用于数据保护(OADP)Operator 的 OpenShift API。
-
DataProtectionApplicationCR 必须处于Ready状态。 -
您必须具有 Velero
BackupCR。 - 持久性卷 (PV) 容量必须与备份时请求的大小匹配。如果需要,调整请求的大小。
流程
创建一个
RestoreCR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令验证
RestoreCR 的状态是否为Completed:oc get restores.velero.io -n openshift-adp <restore> -o jsonpath='{.status.phase}'$ oc get restores.velero.io -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
- 备份的命名空间。
如果您使用卷恢复
DeploymentConfig,或使用 post-restore hook,请输入以下命令运行dc-post-restore.shcleanup 脚本:bash dc-restic-post-restore.sh -> dc-post-restore.sh
$ bash dc-restic-post-restore.sh -> dc-post-restore.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在恢复过程中,OADP Velero 插件会缩减
DeploymentConfig对象,并将 pod 恢复为独立 pod。这是为了防止集群在恢复时立即删除恢复的DeploymentConfigpod,并允许 restore 和 post-restore hook 在恢复的 pod 上完成其操作。下面显示的清理脚本会删除这些断开连接的 pod,并将任何DeploymentConfig对象扩展至适当的副本数。例 4.1.
dc-restic-post-restore.sh → dc-post-restore.shcleanup 脚本Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.18.1.3. 创建恢复 hook 复制链接链接已复制到粘贴板!
您可以通过编辑 Restore 自定义资源 (CR)创建恢复 hook,以便在 pod 中的容器中运行命令。
您可以创建两种类型的恢复 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。
-
在文件系统备份(FSB)恢复操作中,引用 ImageStream 的 Deployment 资源没有被正确恢复。恢复运行 FSB 的 pod,postHook 会被提前终止。
这是因为在恢复操作中,OpenShift 控制器使用更新的 ImageStreamTag 哈希更新 Deployment 资源中的 spec.template.spec.containers[0].image 字段。更新会触发新 pod 的推出,终止 velero 运行 FSB 和后恢复 hook 的 pod。有关镜像流触发器的更多信息,请参阅"镜像流更改的触发更新"。
这个行为的临时解决方案分为两个步骤:
首先,执行排除
Deployment资源的恢复,例如:velero restore create <RESTORE_NAME> \ --from-backup <BACKUP_NAME> \ --exclude-resources=deployment.apps
$ velero restore create <RESTORE_NAME> \ --from-backup <BACKUP_NAME> \ --exclude-resources=deployment.appsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 第一次恢复成功后,通过包含这些资源来执行第二次恢复,例如:
velero restore create <RESTORE_NAME> \ --from-backup <BACKUP_NAME> \ --include-resources=deployment.apps
$ velero restore create <RESTORE_NAME> \ --from-backup <BACKUP_NAME> \ --include-resources=deployment.appsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.19. OADP 和 ROSA 复制链接链接已复制到粘贴板!
4.19.1. 使用 OADP 在 ROSA 集群上备份应用程序 复制链接链接已复制到粘贴板!
您可以使用 OpenShift API for Data Protection (OADP)与 Red Hat OpenShift Service on AWS (ROSA) 集群来备份和恢复应用程序数据。
ROSA 是一个完全管理的一站式应用平台,允许您通过构建和部署应用程序来为客户提供价值。
ROSA 提供与各种 Amazon Web Services(AWS)计算、数据库、分析、机器学习、网络、移动和其他服务无缝集成,以加快为您的客户构建和交付不同体验。
您可以直接从 AWS 帐户订阅该服务。
创建集群后,您可以使用 OpenShift Container Platform Web 控制台或 Red Hat OpenShift Cluster Manager 来运行集群。您还可以在 OpenShift API 和命令行界面 (CLI) 工具中使用 ROSA。
有关 ROSA 安装的更多信息,请参阅在 AWS (ROSA)上安装 Red Hat OpenShift Service。
在为数据保护(OADP)安装 OpenShift API 前,您必须为 OADP 设置角色和策略凭证,以便它可以使用 Amazon Web Services API。
这个过程在以下两个阶段执行:
- 准备 AWS 凭证
- 安装 OADP Operator 并为其提供 IAM 角色
4.19.1.1. 为 OADP 准备 AWS 凭证 复制链接链接已复制到粘贴板!
必须准备 Amazon Web Services 帐户,并配置为接受 OpenShift API for Data Protection (OADP) 安装。
流程
运行以下命令来创建以下环境变量:
重要更改集群名称来匹配您的 ROSA 集群,并确保以管理员身份登录到集群。在继续操作前,确保所有字段被正常输出。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
my-cluster替换为您的 ROSA 集群名称。
在 AWS 帐户中,创建一个 IAM 策略以允许访问 AWS S3:
运行以下命令,检查策略是否存在:
POLICY_ARN=$(aws iam list-policies --query "Policies[?PolicyName=='RosaOadpVer1'].{ARN:Arn}" --output text)$ POLICY_ARN=$(aws iam list-policies --query "Policies[?PolicyName=='RosaOadpVer1'].{ARN:Arn}" --output text)1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
RosaOadp替换为您的策略名称。
输入以下命令来创建策略 JSON 文件,然后在 ROSA 中创建策略:
注意如果没有找到策略 ARN,命令会创建策略。如果策略 ARN 已存在,则
if语句会有意跳过策略创建。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
SCRATCH是为环境变量创建的临时目录的名称。
运行以下命令来查看策略 ARN:
echo ${POLICY_ARN}$ echo ${POLICY_ARN}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
为集群创建 IAM 角色信任策略:
运行以下命令来创建信任策略文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建角色:
ROLE_ARN=$(aws iam create-role --role-name \ "${ROLE_NAME}" \ --assume-role-policy-document file://${SCRATCH}/trust-policy.json \ --tags Key=rosa_cluster_id,Value=${ROSA_CLUSTER_ID} Key=rosa_openshift_version,Value=${CLUSTER_VERSION} Key=rosa_role_prefix,Value=ManagedOpenShift Key=operator_namespace,Value=openshift-adp Key=operator_name,Value=openshift-oadp \ --query Role.Arn --output text)$ ROLE_ARN=$(aws iam create-role --role-name \ "${ROLE_NAME}" \ --assume-role-policy-document file://${SCRATCH}/trust-policy.json \ --tags Key=rosa_cluster_id,Value=${ROSA_CLUSTER_ID} Key=rosa_openshift_version,Value=${CLUSTER_VERSION} Key=rosa_role_prefix,Value=ManagedOpenShift Key=operator_namespace,Value=openshift-adp Key=operator_name,Value=openshift-oadp \ --query Role.Arn --output text)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来查看角色 ARN:
echo ${ROLE_ARN}$ echo ${ROLE_ARN}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,将 IAM 策略附加到 IAM 角色:
aws iam attach-role-policy --role-name "${ROLE_NAME}" \ --policy-arn ${POLICY_ARN}$ aws iam attach-role-policy --role-name "${ROLE_NAME}" \ --policy-arn ${POLICY_ARN}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.19.1.2. 安装 OADP Operator 并提供 IAM 角色 复制链接链接已复制到粘贴板!
AWS 安全令牌服务 (AWS STS) 是一个全局 Web 服务,它为 IAM 或联邦用户提供简短凭证。带有 STS 的 OpenShift Container Platform (ROSA) 是 ROSA 集群的建议凭证模式。本文档论述了如何使用 AWS STS 在 ROSA 上安装 OpenShift API for Data Protection (OADP)。
不支持 Restic。
在备份没有 Container Storage Interface (CSI) 快照支持的文件系统时,支持 Kopia 文件系统备份(FSB)。
文件系统示例包括:
- Amazon Elastic File System (EFS)
- 网络文件系统 (NFS)
-
emptyDir卷 - 本地卷
对于备份卷,使用 AWS STS 的 ROSA 上 OADP 仅支持原生快照和 Container Storage Interface (CSI) 快照。
在使用 STS 验证的 Amazon ROSA 集群中,不支持在不同的 AWS 区域中恢复备份数据。
目前,ROSA 集群不支持 Data Mover 功能。您可以使用原生 AWS S3 工具移动数据。
先决条件
-
具有所需访问权限和令牌的 OpenShift Container Platform ROSA 集群。具体步骤请查看为 OADP 准备 AWS 凭证。如果您计划使用两个不同的集群来备份和恢复,您必须为每个集群准备 AWS 凭证,包括
ROLE_ARN。
流程
输入以下命令,从 AWS 令牌文件创建 OpenShift Container Platform secret:
创建凭证文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<aws_region>替换为用于 STS 端点的 AWS 区域。
为 OADP 创建命名空间:
oc create namespace openshift-adp
$ oc create namespace openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 OpenShift Container Platform secret:
oc -n openshift-adp create secret generic cloud-credentials \ --from-file=${SCRATCH}/credentials$ oc -n openshift-adp create secret generic cloud-credentials \ --from-file=${SCRATCH}/credentialsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在 OpenShift Container Platform 版本 4.15 及更新的版本中,OADP Operator 通过 Operator Lifecycle Manager (OLM) 和 Cloud Credentials Operator (CCO) 支持新的标准化 STS 工作流。在此工作流中,您不需要创建上述 secret,您需要在使用 OpenShift Container Platform Web 控制台安装 OLM 管理的 Operator 时提供角色 ARN,请参阅使用 Web 控制台从 OperatorHub 安装。
前面的 secret 由 CCO 自动创建。
安装 OADP Operator:
- 在 OpenShift Container Platform Web 控制台中,浏览 Operators → OperatorHub。
- 搜索 OADP Operator。
- 在 role_ARN 字段中,粘贴之前创建的 role_arn,再点 Install。
输入以下命令,使用 AWS 凭证创建 AWS 云存储:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令检查应用程序的存储默认存储类:
oc get pvc -n <namespace>
$ oc get pvc -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE applog Bound pvc-351791ae-b6ab-4e8b-88a4-30f73caf5ef8 1Gi RWO gp3-csi 4d19h mysql Bound pvc-16b8e009-a20a-4379-accc-bc81fedd0621 1Gi RWO gp3-csi 4d19h
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE applog Bound pvc-351791ae-b6ab-4e8b-88a4-30f73caf5ef8 1Gi RWO gp3-csi 4d19h mysql Bound pvc-16b8e009-a20a-4379-accc-bc81fedd0621 1Gi RWO gp3-csi 4d19hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来获取存储类:
oc get storageclass
$ oc get storageclassCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2 kubernetes.io/aws-ebs Delete WaitForFirstConsumer true 4d21h gp2-csi ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3 ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3-csi (default) ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2 kubernetes.io/aws-ebs Delete WaitForFirstConsumer true 4d21h gp2-csi ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3 ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3-csi (default) ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意以下存储类可以正常工作:
- gp3-csi
- gp2-csi
- gp3
- gp2
如果要备份的应用程序或应用程序都使用带有 Container Storage Interface (CSI) 的持久性卷 (PV),建议在 OADP DPA 配置中包含 CSI 插件。
创建
DataProtectionApplication资源,以配置存储备份和卷快照的存储的连接:如果您只使用 CSI 卷,请输入以下命令部署数据保护应用程序:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用 CSI 或非 CSI 卷,请输入以下命令来部署数据保护应用程序:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,您可以备份和恢复 OpenShift Container Platform 应用程序,如 备份应用程序 中所述。
此配置中的 restic 的 enable 参数设置为 false,因为 OADP 不支持 ROSA 环境中的 Restic。
如果使用 OADP 1.2,请替换此配置:
nodeAgent: enable: false uploaderType: restic
nodeAgent:
enable: false
uploaderType: restic
使用以下配置:
restic: enable: false
restic:
enable: false
如果要使用两个不同的集群来备份和恢复,则两个集群必须在云存储 CR 和 OADP DataProtectionApplication 配置中具有相同的 AWS S3 存储名称。
4.19.1.3. 更新 OADP Operator 订阅中 IAM 角色 ARN 复制链接链接已复制到粘贴板!
当在 ROSA 安全令牌服务(STS)集群中安装 OADP Operator 时,如果您提供了不正确的 IAM 角色 Amazon Resource Name (ARN),openshift-adp-controller pod 会出错。生成的凭证请求包含错误的 IAM 角色 ARN。要使用正确的 IAM 角色 ARN 更新凭证请求对象,您可以编辑 OADP Operator 订阅并使用正确的值修补 IAM 角色 ARN。通过编辑 OADP Operator 订阅,您不必卸载和重新安装 OADP 来更新 IAM 角色 ARN。
先决条件
- 您有一个带有所需访问和令牌的 Red Hat OpenShift Service on AWS STS 集群。
- 您已在 ROSA STS 集群中安装了 OADP。
流程
要验证 OADP 订阅是否有错误的 IAM 角色 ARN 环境变量设置,请运行以下命令:
oc get sub -o yaml redhat-oadp-operator
$ oc get sub -o yaml redhat-oadp-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 订阅示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 验证您要更新的
ROLEARN的值。
运行以下命令,使用正确的角色 ARN 更新订阅的
ROLEARN字段:oc patch subscription redhat-oadp-operator -p '{"spec": {"config": {"env": [{"name": "ROLEARN", "value": "<role_arn>"}]}}}' --type='merge'$ oc patch subscription redhat-oadp-operator -p '{"spec": {"config": {"env": [{"name": "ROLEARN", "value": "<role_arn>"}]}}}' --type='merge'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
<role_arn>-
指定要更新的 IAM 角色 ARN。例如,
arn:aws:iam::160…..6956:role/oadprosa…..8wlf。
运行以下命令,验证
secret对象是否使用正确的角色 ARN 值更新:oc get secret cloud-credentials -o jsonpath='{.data.credentials}' | base64 -d$ oc get secret cloud-credentials -o jsonpath='{.data.credentials}' | base64 -dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
[default] sts_regional_endpoints = regional role_arn = arn:aws:iam::160.....6956:role/oadprosa.....8wlf web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token
[default] sts_regional_endpoints = regional role_arn = arn:aws:iam::160.....6956:role/oadprosa.....8wlf web_identity_token_file = /var/run/secrets/openshift/serviceaccount/tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
DataProtectionApplication自定义资源 (CR) 清单文件,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定
CloudStorageCR。
运行以下命令来创建
DataProtectionApplicationCR:oc create -f <dpa_manifest_file>
$ oc create -f <dpa_manifest_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
DataProtectionApplicationCR 是否已协调,status是否已设置为"True":oc get dpa -n openshift-adp -o yaml
$ oc get dpa -n openshift-adp -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow DataProtectionApplication示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
BackupStorageLocationCR 是否为可用状态:oc get backupstoragelocations.velero.io -n openshift-adp
$ oc get backupstoragelocations.velero.io -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow BackupStorageLocation示例NAME PHASE LAST VALIDATED AGE DEFAULT ts-dpa-1 Available 3s 6s true
NAME PHASE LAST VALIDATED AGE DEFAULT ts-dpa-1 Available 3s 6s trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.19.1.4. 示例:使用可选清理在 OADP ROSA STS 上备份工作负载 复制链接链接已复制到粘贴板!
4.19.1.4.1. 使用 OADP 和 ROSA STS 执行备份 复制链接链接已复制到粘贴板!
以下示例 hello-world 应用没有附加持久性卷 (PV)。使用 OpenShift API 对 Red Hat OpenShift Service on AWS (ROSA) STS 进行数据保护 (OADP) 进行备份。
数据保护应用程序 (DPA) 配置都将正常工作。
运行以下命令,创建一个工作负载来备份:
oc create namespace hello-world
$ oc create namespace hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
$ oc new-app -n hello-world --image=docker.io/openshift/hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来公开路由:
oc expose service/hello-openshift -n hello-world
$ oc expose service/hello-openshift -n hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查应用程序是否正常工作:
curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`$ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Hello OpenShift!
Hello OpenShift!Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来备份工作负载:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待备份完成,然后运行以下命令:
watch "oc -n openshift-adp get backup hello-world -o json | jq .status"
$ watch "oc -n openshift-adp get backup hello-world -o json | jq .status"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来删除 demo 工作负载:
oc delete ns hello-world
$ oc delete ns hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,从备份中恢复工作负载:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令等待 Restore 完成:
watch "oc -n openshift-adp get restore hello-world -o json | jq .status"
$ watch "oc -n openshift-adp get restore hello-world -o json | jq .status"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查工作负载是否已恢复:
oc -n hello-world get pods
$ oc -n hello-world get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE hello-openshift-9f885f7c6-kdjpj 1/1 Running 0 90s
NAME READY STATUS RESTARTS AGE hello-openshift-9f885f7c6-kdjpj 1/1 Running 0 90sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来检查 JSONPath:
curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`$ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Hello OpenShift!
Hello OpenShift!Copy to Clipboard Copied! Toggle word wrap Toggle overflow
有关故障排除提示的信息,请参阅 OADP 团队的 故障排除文档。
4.19.1.4.2. 使用 OADP 和 ROSA STS 的备份后清理集群 复制链接链接已复制到粘贴板!
如果您需要卸载 OpenShift API for Data Protection (OADP) Operator 以及本例中的备份和 S3 存储桶,请按照以下步骤操作。
流程
运行以下命令来删除工作负载:
oc delete ns hello-world
$ oc delete ns hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来删除数据保护应用程序 (DPA):
oc -n openshift-adp delete dpa ${CLUSTER_NAME}-dpa$ oc -n openshift-adp delete dpa ${CLUSTER_NAME}-dpaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来删除云存储:
oc -n openshift-adp delete cloudstorage ${CLUSTER_NAME}-oadp$ oc -n openshift-adp delete cloudstorage ${CLUSTER_NAME}-oadpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告如果这个命令挂起,您可能需要通过运行以下命令来删除终结器:
oc -n openshift-adp patch cloudstorage ${CLUSTER_NAME}-oadp -p '{"metadata":{"finalizers":null}}' --type=merge$ oc -n openshift-adp patch cloudstorage ${CLUSTER_NAME}-oadp -p '{"metadata":{"finalizers":null}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果不再需要 Operator,请运行以下命令删除它:
oc -n openshift-adp delete subscription oadp-operator
$ oc -n openshift-adp delete subscription oadp-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从 Operator 中删除命名空间:
oc delete ns openshift-adp
$ oc delete ns openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果不再需要备份和恢复资源,请运行以下命令从集群中删除它们:
oc delete backups.velero.io hello-world
$ oc delete backups.velero.io hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要删除 AWS S3 中的备份、恢复和远程对象,请运行以下命令:
velero backup delete hello-world
$ velero backup delete hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您不再需要自定义资源定义 (CRD),请运行以下命令从集群中删除它们:
for CRD in `oc get crds | grep velero | awk '{print $1}'`; do oc delete crd $CRD; done$ for CRD in `oc get crds | grep velero | awk '{print $1}'`; do oc delete crd $CRD; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来删除 AWS S3 存储桶:
aws s3 rm s3://${CLUSTER_NAME}-oadp --recursive$ aws s3 rm s3://${CLUSTER_NAME}-oadp --recursiveCopy to Clipboard Copied! Toggle word wrap Toggle overflow aws s3api delete-bucket --bucket ${CLUSTER_NAME}-oadp$ aws s3api delete-bucket --bucket ${CLUSTER_NAME}-oadpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将策略从角色分离:
aws iam detach-role-policy --role-name "${ROLE_NAME}" --policy-arn "${POLICY_ARN}"$ aws iam detach-role-policy --role-name "${ROLE_NAME}" --policy-arn "${POLICY_ARN}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来删除角色:
aws iam delete-role --role-name "${ROLE_NAME}"$ aws iam delete-role --role-name "${ROLE_NAME}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.20. OADP 和 AWS STS 复制链接链接已复制到粘贴板!
4.20.1. 使用 OADP 在 AWS STS 上备份应用程序 复制链接链接已复制到粘贴板!
您可以通过安装 OADP Operator,使用 Amazon Web Services (AWS) 安装 OpenShift API for Data Protection (OADP)。Operator 安装 Velero 1.14。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作 Migration Toolkit for Containers Operator 的依赖项,且不能作为独立 Operator 提供。
您可以为 Velero 配置 AWS,创建一个默认 Secret,然后安装数据保护应用程序。如需了解更多详细信息,请参阅安装 OADP Operator。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
您可以手动在 AWS 安全令牌服务 (AWS STS) 集群上安装 OADP。Amazon AWS 将 AWS STS 作为 Web 服务提供,可让您为用户请求临时的、带有有限权限的凭证。您可以使用 STS 通过 API 调用、AWS 控制台或 AWS 命令行界面(CLI)为可信用户提供临时访问资源。
在为数据保护(OADP)安装 OpenShift API 前,您必须为 OADP 设置角色和策略凭证,以便它可以使用 Amazon Web Services API。
这个过程在以下两个阶段执行:
- 准备 AWS 凭证。
- 安装 OADP Operator,并为它提供一个 IAM 角色。
4.20.1.1. 为 OADP 准备 AWS STS 凭证 复制链接链接已复制到粘贴板!
必须准备 Amazon Web Services 帐户,并配置为接受 OpenShift API for Data Protection (OADP) 安装。使用以下步骤准备 AWS 凭证。
流程
运行以下命令来定义
cluster_name环境变量:export CLUSTER_NAME= <AWS_cluster_name>
$ export CLUSTER_NAME= <AWS_cluster_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 变量可以设置为任何值。
运行以下命令,获取
cluster的详情,如AWS_ACCOUNT_ID, OIDC_ENDPOINT:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建一个临时目录来存储所有文件:
export SCRATCH="/tmp/${CLUSTER_NAME}/oadp" mkdir -p ${SCRATCH}$ export SCRATCH="/tmp/${CLUSTER_NAME}/oadp" mkdir -p ${SCRATCH}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令显示所有收集的详细信息:
echo "Cluster ID: ${AWS_CLUSTER_ID}, Region: ${REGION}, OIDC Endpoint: ${OIDC_ENDPOINT}, AWS Account ID: ${AWS_ACCOUNT_ID}"$ echo "Cluster ID: ${AWS_CLUSTER_ID}, Region: ${REGION}, OIDC Endpoint: ${OIDC_ENDPOINT}, AWS Account ID: ${AWS_ACCOUNT_ID}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 AWS 帐户中,创建一个 IAM 策略以允许访问 AWS S3:
运行以下命令,检查策略是否存在:
export POLICY_NAME="OadpVer1"
$ export POLICY_NAME="OadpVer1"1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 变量可以设置为任何值。
POLICY_ARN=$(aws iam list-policies --query "Policies[?PolicyName=='$POLICY_NAME'].{ARN:Arn}" --output text)$ POLICY_ARN=$(aws iam list-policies --query "Policies[?PolicyName=='$POLICY_NAME'].{ARN:Arn}" --output text)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令来创建策略 JSON 文件,然后创建策略:
注意如果没有找到策略 ARN,命令会创建策略。如果策略 ARN 已存在,则
if语句会有意跳过策略创建。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
SCRATCH是为存储文件创建的临时目录的名称。
运行以下命令来查看策略 ARN:
echo ${POLICY_ARN}$ echo ${POLICY_ARN}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
为集群创建 IAM 角色信任策略:
运行以下命令来创建信任策略文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为集群创建 IAM 角色信任策略:
ROLE_ARN=$(aws iam create-role --role-name \ "${ROLE_NAME}" \ --assume-role-policy-document file://${SCRATCH}/trust-policy.json \ --tags Key=cluster_id,Value=${AWS_CLUSTER_ID} Key=openshift_version,Value=${CLUSTER_VERSION} Key=operator_namespace,Value=openshift-adp Key=operator_name,Value=oadp --query Role.Arn --output text)$ ROLE_ARN=$(aws iam create-role --role-name \ "${ROLE_NAME}" \ --assume-role-policy-document file://${SCRATCH}/trust-policy.json \ --tags Key=cluster_id,Value=${AWS_CLUSTER_ID} Key=openshift_version,Value=${CLUSTER_VERSION} Key=operator_namespace,Value=openshift-adp Key=operator_name,Value=oadp --query Role.Arn --output text)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来查看角色 ARN:
echo ${ROLE_ARN}$ echo ${ROLE_ARN}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,将 IAM 策略附加到 IAM 角色:
aws iam attach-role-policy --role-name "${ROLE_NAME}" --policy-arn ${POLICY_ARN}$ aws iam attach-role-policy --role-name "${ROLE_NAME}" --policy-arn ${POLICY_ARN}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.20.1.1.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 和内存要求。
4.20.1.2. 安装 OADP Operator 并提供 IAM 角色 复制链接链接已复制到粘贴板!
AWS 安全令牌服务 (AWS STS) 是一个全局 Web 服务,它为 IAM 或联邦用户提供简短凭证。本文档论述了如何在 AWS STS 集群中手动安装 OpenShift API for Data Protection (OADP)。
OADP AWS STS 环境中不支持 Restic 和 Kopia。验证 Restic 和 Kopia 节点代理是否已禁用。对于备份卷,AWS STS 上的 OADP 仅支持原生快照和 Container Storage Interface (CSI) 快照。
在使用 STS 验证的 AWS 集群中,不支持在不同的 AWS 区域中恢复备份数据。
AWS STS 集群目前不支持 Data Mover 功能。您可以使用原生 AWS S3 工具移动数据。
先决条件
-
具有所需访问权限和令牌的 OpenShift Container Platform AWS STS 集群。具体步骤请查看为 OADP 准备 AWS 凭证。如果您计划使用两个不同的集群来备份和恢复,您必须为每个集群准备 AWS 凭证,包括
ROLE_ARN。
流程
输入以下命令,从 AWS 令牌文件创建 OpenShift Container Platform secret:
创建凭证文件:
cat <<EOF > ${SCRATCH}/credentials [default] role_arn = ${ROLE_ARN} web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token EOF$ cat <<EOF > ${SCRATCH}/credentials [default] role_arn = ${ROLE_ARN} web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 OADP 创建命名空间:
oc create namespace openshift-adp
$ oc create namespace openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 OpenShift Container Platform secret:
oc -n openshift-adp create secret generic cloud-credentials \ --from-file=${SCRATCH}/credentials$ oc -n openshift-adp create secret generic cloud-credentials \ --from-file=${SCRATCH}/credentialsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在 OpenShift Container Platform 版本 4.14 及更新的版本中,OADP Operator 通过 Operator Lifecycle Manager (OLM) 和 Cloud Credentials Operator (CCO)支持新的标准化 STS 工作流。在此工作流中,您不需要创建上述 secret,您需要在使用 OpenShift Container Platform Web 控制台安装 OLM 管理的 Operator 时提供角色 ARN,请参阅使用 Web 控制台从 OperatorHub 安装。
前面的 secret 由 CCO 自动创建。
安装 OADP Operator:
- 在 OpenShift Container Platform Web 控制台中,浏览 Operators → OperatorHub。
- 搜索 OADP Operator。
- 在 role_ARN 字段中,粘贴之前创建的 role_arn,再点 Install。
输入以下命令,使用 AWS 凭证创建 AWS 云存储:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令检查应用程序的存储默认存储类:
oc get pvc -n <namespace>
$ oc get pvc -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE applog Bound pvc-351791ae-b6ab-4e8b-88a4-30f73caf5ef8 1Gi RWO gp3-csi 4d19h mysql Bound pvc-16b8e009-a20a-4379-accc-bc81fedd0621 1Gi RWO gp3-csi 4d19h
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE applog Bound pvc-351791ae-b6ab-4e8b-88a4-30f73caf5ef8 1Gi RWO gp3-csi 4d19h mysql Bound pvc-16b8e009-a20a-4379-accc-bc81fedd0621 1Gi RWO gp3-csi 4d19hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来获取存储类:
oc get storageclass
$ oc get storageclassCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2 kubernetes.io/aws-ebs Delete WaitForFirstConsumer true 4d21h gp2-csi ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3 ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3-csi (default) ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2 kubernetes.io/aws-ebs Delete WaitForFirstConsumer true 4d21h gp2-csi ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3 ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3-csi (default) ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意以下存储类可以正常工作:
- gp3-csi
- gp2-csi
- gp3
- gp2
如果要备份的应用程序或应用程序都使用带有 Container Storage Interface (CSI) 的持久性卷 (PV),建议在 OADP DPA 配置中包含 CSI 插件。
创建
DataProtectionApplication资源,以配置存储备份和卷快照的存储的连接:如果您只使用 CSI 卷,请输入以下命令部署数据保护应用程序:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果您不想使用镜像备份,请将此字段设置为
false。
如果使用 CSI 或非 CSI 卷,请输入以下命令来部署数据保护应用程序:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,您可以备份和恢复 OpenShift Container Platform 应用程序,如 备份应用程序 中所述。
如果使用 OADP 1.2,请替换此配置:
nodeAgent: enable: false uploaderType: restic
nodeAgent:
enable: false
uploaderType: restic
使用以下配置:
restic: enable: false
restic:
enable: false
如果要使用两个不同的集群来备份和恢复,则两个集群必须在云存储 CR 和 OADP DataProtectionApplication 配置中具有相同的 AWS S3 存储名称。
4.20.1.3. 备份 OADP AWS STS 上的工作负载,可以使用可选的清理 复制链接链接已复制到粘贴板!
4.20.1.3.1. 使用 OADP 和 AWS STS 执行备份 复制链接链接已复制到粘贴板!
以下示例 hello-world 应用没有附加持久性卷 (PV)。使用 OpenShift API 对 Amazon Web Services (AWS STS) 的数据保护 (OADP) 执行备份。
数据保护应用程序 (DPA) 配置都将正常工作。
运行以下命令,创建一个工作负载来备份:
oc create namespace hello-world
$ oc create namespace hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
$ oc new-app -n hello-world --image=docker.io/openshift/hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来公开路由:
oc expose service/hello-openshift -n hello-world
$ oc expose service/hello-openshift -n hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查应用程序是否正常工作:
curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`$ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Hello OpenShift!
Hello OpenShift!Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来备份工作负载:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待备份完成,然后运行以下命令:
watch "oc -n openshift-adp get backup hello-world -o json | jq .status"
$ watch "oc -n openshift-adp get backup hello-world -o json | jq .status"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来删除 demo 工作负载:
oc delete ns hello-world
$ oc delete ns hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,从备份中恢复工作负载:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令等待 Restore 完成:
watch "oc -n openshift-adp get restore hello-world -o json | jq .status"
$ watch "oc -n openshift-adp get restore hello-world -o json | jq .status"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查工作负载是否已恢复:
oc -n hello-world get pods
$ oc -n hello-world get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE hello-openshift-9f885f7c6-kdjpj 1/1 Running 0 90s
NAME READY STATUS RESTARTS AGE hello-openshift-9f885f7c6-kdjpj 1/1 Running 0 90sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来检查 JSONPath:
curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`$ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Hello OpenShift!
Hello OpenShift!Copy to Clipboard Copied! Toggle word wrap Toggle overflow
有关故障排除提示的信息,请参阅 OADP 团队的 故障排除文档。
4.20.1.3.2. 在使用 OADP 和 AWS STS 备份后清理集群 复制链接链接已复制到粘贴板!
如果您需要卸载 OpenShift API for Data Protection (OADP) Operator 以及本例中的备份和 S3 存储桶,请按照以下步骤操作。
流程
运行以下命令来删除工作负载:
oc delete ns hello-world
$ oc delete ns hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来删除数据保护应用程序 (DPA):
oc -n openshift-adp delete dpa ${CLUSTER_NAME}-dpa$ oc -n openshift-adp delete dpa ${CLUSTER_NAME}-dpaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来删除云存储:
oc -n openshift-adp delete cloudstorage ${CLUSTER_NAME}-oadp$ oc -n openshift-adp delete cloudstorage ${CLUSTER_NAME}-oadpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果这个命令挂起,您可能需要通过运行以下命令来删除终结器:
oc -n openshift-adp patch cloudstorage ${CLUSTER_NAME}-oadp -p '{"metadata":{"finalizers":null}}' --type=merge$ oc -n openshift-adp patch cloudstorage ${CLUSTER_NAME}-oadp -p '{"metadata":{"finalizers":null}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果不再需要 Operator,请运行以下命令删除它:
oc -n openshift-adp delete subscription oadp-operator
$ oc -n openshift-adp delete subscription oadp-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,从 Operator 中删除命名空间:
oc delete ns openshift-adp
$ oc delete ns openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果不再需要备份和恢复资源,请运行以下命令从集群中删除它们:
oc delete backups.velero.io hello-world
$ oc delete backups.velero.io hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要删除 AWS S3 中的备份、恢复和远程对象,请运行以下命令:
velero backup delete hello-world
$ velero backup delete hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您不再需要自定义资源定义 (CRD),请运行以下命令从集群中删除它们:
for CRD in `oc get crds | grep velero | awk '{print $1}'`; do oc delete crd $CRD; done$ for CRD in `oc get crds | grep velero | awk '{print $1}'`; do oc delete crd $CRD; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来删除 AWS S3 存储桶:
aws s3 rm s3://${CLUSTER_NAME}-oadp --recursive$ aws s3 rm s3://${CLUSTER_NAME}-oadp --recursiveCopy to Clipboard Copied! Toggle word wrap Toggle overflow aws s3api delete-bucket --bucket ${CLUSTER_NAME}-oadp$ aws s3api delete-bucket --bucket ${CLUSTER_NAME}-oadpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将策略从角色分离:
aws iam detach-role-policy --role-name "${ROLE_NAME}" --policy-arn "${POLICY_ARN}"$ aws iam detach-role-policy --role-name "${ROLE_NAME}" --policy-arn "${POLICY_ARN}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来删除角色:
aws iam delete-role --role-name "${ROLE_NAME}"$ aws iam delete-role --role-name "${ROLE_NAME}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.21. OADP 和 3scale 复制链接链接已复制到粘贴板!
4.21.1. 使用 OADP 备份和恢复 3scale API 管理 复制链接链接已复制到粘贴板!
使用红帽 3scale API 管理,您可以管理内部或外部用户的 API。您可以在内部、云端、托管服务或根据您的要求任意组合部署 3scale 组件。
使用 OpenShift API for Data Protection (OADP),您可以通过备份应用程序资源、持久性卷和配置来保护 3scale API 管理部署。
您可以使用 OpenShift API for Data Protection (OADP) Operator 来备份和恢复 3scale API 管理 on-cluster 存储数据库,而不影响正在运行的服务
您可以配置 OADP,以使用 3scale API 管理执行以下操作:
- 按照 备份 3scale API 管理 中的步骤创建 3scale 组件的备份。
- 请按照恢复 3scale API 管理 中的步骤来恢复 3scale 操作器 和部署的组件。
4.21.2. 使用 OADP 备份 3scale API 管理 复制链接链接已复制到粘贴板!
您可以通过备份 3scale operator 和 MySQL 和 Redis 等数据库来备份 Red Hat 3scale API 管理组件。
先决条件
- 已安装并配置了 Red Hat 3scale API Management。如需更多信息,请参阅在 OpenShift 和 Red Hat 3scale API Management 上安装 3scale API 管理。
4.21.2.1. 创建数据保护应用程序 复制链接链接已复制到粘贴板!
您可以为 Red Hat 3scale API Management 创建数据保护应用程序(DPA)自定义资源(CR)。
流程
使用以下配置创建 YAML 文件:
dpa.yaml文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 DPA CR:
oc create -f dpa.yaml
$ oc create -f dpa.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.21.2.2. 备份 3scale API 管理 operator、secret 和 APIManager 复制链接链接已复制到粘贴板!
您可以备份 Red Hat 3scale API Management operator 资源,以及 Secret 和 APIManager 自定义资源(CR)。
先决条件
- 您创建了数据保护应用程序 (DPA)。
流程
通过创建带有以下配置的 YAML 文件来备份 3scale operator CR,如
operatorgroup、命名空间和订阅 :backup.yaml文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您还可以备份和恢复
ReplicationController、Deployment和Pod对象,以确保所有手动设置环境都已备份和恢复。这不会影响恢复流。运行以下命令来创建备份 CR:
oc create -f backup.yaml
$ oc create -f backup.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
backup.velero.io/operator-install-backup created
backup.velero.io/operator-install-backup createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过使用以下配置创建 YAML 文件来备份
SecretCR:backup-secret.yaml文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 备份中的
metadata.name参数的值与恢复Secret时使用的metadata.backupName参数的值相同。
运行以下命令来创建
Secret备份 CR:oc create -f backup-secret.yaml
$ oc create -f backup-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
backup.velero.io/operator-resources-secrets created
backup.velero.io/operator-resources-secrets createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过创建带有以下配置的 YAML 文件来备份 APIManager CR:
backup-apimanager.yaml 文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 备份中的
metadata.name参数的值与恢复 APIManager 时使用的metadata.backupName参数的值相同。
运行以下命令来创建 APIManager CR:
oc create -f backup-apimanager.yaml
$ oc create -f backup-apimanager.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
backup.velero.io/operator-resources-apim created
backup.velero.io/operator-resources-apim createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.21.2.3. 备份 MySQL 数据库 复制链接链接已复制到粘贴板!
您可以通过创建并附加持久性卷声明(PVC)来备份 MySQL 数据库,以便在指定路径中包含转储的数据。
先决条件
- 您已备份了 Red Hat 3scale API Management operator。
流程
使用以下配置创建 YAML 文件来添加额外 PVC:
ts_pvc.yaml文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建额外 PVC:
oc create -f ts_pvc.yml
$ oc create -f ts_pvc.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过编辑
system-mysql部署以使用 MySQL 转储,将 PVC 附加到系统数据库 pod:oc edit deployment system-mysql -n threescale
$ oc edit deployment system-mysql -n threescaleCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 包含转储数据的 PVC。
使用以下配置创建 YAML 文件以备份 MySQL 数据库:
mysql.yaml文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令备份 MySQL 数据库:
oc create -f mysql.yaml
$ oc create -f mysql.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
backup.velero.io/mysql-backup created
backup.velero.io/mysql-backup createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证 MySQL 备份是否已完成:
oc get backups.velero.io mysql-backup -o yaml
$ oc get backups.velero.io mysql-backup -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.21.2.4. 备份后端 Redis 数据库 复制链接链接已复制到粘贴板!
您可以通过添加所需的注解并使用 includedResources 参数列出哪些资源来备份 Redis 数据库。
先决条件
- 备份 Red Hat 3scale API Management Operator。
- 您备份了 MySQL 数据库。
- 在执行备份前,Redis 队列已排空。
流程
运行以下命令,编辑
backend-redis部署上的注解:oc edit deployment backend-redis -n threescale
$ oc edit deployment backend-redis -n threescaleCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下配置创建 YAML 文件以备份 Redis 数据库:
redis-backup.yaml文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 备份中的
metadata.name参数的值与恢复 Redis 数据库时使用的metadata.backupName参数的值相同。
运行以下命令备份 Redis 数据库:
oc create -f redis-backup.yaml
$ oc create -f redis-backup.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
backup.velero.io/redis-backup created
backup.velero.io/redis-backup createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证 Redis 备份是否已完成:
oc get backups.velero.io redis-backup -o yaml
$ oc get backups.velero.io redis-backup -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.21.3. 使用 OADP 恢复 3scale API 管理 复制链接链接已复制到粘贴板!
您可以通过恢复备份的 3scale operator 资源来恢复 Red Hat 3scale API Management 组件。您还可以恢复 MySQL 和 Redis 等数据库。
恢复数据后,您可以扩展 3scale 操作器和部署。
先决条件
- 已安装并配置了 Red Hat 3scale API Management。如需更多信息,请参阅在 OpenShift 和 Red Hat 3scale API Management 上安装 3scale API 管理。
- 您备份了 3scale 操作器和数据库,如 MySQL 和 Redis。
- 确保您在从备份的同一集群中恢复 3scale。
- 如果要在不同的集群中恢复 3scale,请确保原始备份集群和您要恢复 Operator 的集群使用相同的自定义域。
您可以按照以下流程恢复 Red Hat 3scale API Management operator 资源,以及 Secret 和 APIManager 自定义资源(CR)。
先决条件
- 备份 3scale Operator。
- 您备份了 MySQL 和 Redis 数据库。
您可以在备份的同一集群中恢复数据库。
如果要将 Operator 恢复到您备份的不同集群,请在目标集群上安装和配置 OADP,并在目标集群中启用
nodeAgent。确保 OADP 配置与源集群中的相同。
流程
运行以下命令,删除 3scale operator 自定义资源定义(CRD)和
threescale命名空间:oc delete project threescale
$ oc delete project threescaleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
"threescale" project deleted successfully
"threescale" project deleted successfullyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下配置创建 YAML 文件,以恢复 3scale Operator:
restore.yaml文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 恢复 3scale Operator 的备份
运行以下命令来恢复 3scale Operator:
oc create -f restore.yaml
$ oc create -f restore.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
restore.velerio.io/operator-installation-restore created
restore.velerio.io/operator-installation-restore createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令手动创建
s3-credentialsSecret对象:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令缩减 3scale Operator:
oc scale deployment threescale-operator-controller-manager-v2 --replicas=0 -n threescale
$ oc scale deployment threescale-operator-controller-manager-v2 --replicas=0 -n threescaleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
deployment.apps/threescale-operator-controller-manager-v2 scaled
deployment.apps/threescale-operator-controller-manager-v2 scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下配置创建 YAML 文件,以恢复
Secret:restore-secret.yaml文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 恢复
Secret备份。
运行以下命令来恢复
Secret:oc create -f restore-secrets.yaml
$ oc create -f restore-secrets.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
restore.velerio.io/operator-resources-secrets created
restore.velerio.io/operator-resources-secrets createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下配置创建 YAML 文件以恢复 APIManager:
restore-apimanager.yaml文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来恢复 APIManager:
oc create -f restore-apimanager.yaml
$ oc create -f restore-apimanager.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
restore.velerio.io/operator-resources-apim created
restore.velerio.io/operator-resources-apim createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令扩展 3scale Operator:
oc scale deployment threescale-operator-controller-manager-v2 --replicas=1 -n threescale
$ oc scale deployment threescale-operator-controller-manager-v2 --replicas=1 -n threescaleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
deployment.apps/threescale-operator-controller-manager-v2 scaled
deployment.apps/threescale-operator-controller-manager-v2 scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.21.3.2. 恢复 MySQL 数据库 复制链接链接已复制到粘贴板!
恢复 MySQL 数据库重新创建以下资源:
-
Pod、ReplicationController和Deployment对象。 - 其他持久性卷(PV)和关联的持久性卷声明(PVC)。
-
example-claimPVC 包含的 MySQL 转储。
不要删除与数据库关联的默认 PV 和 PVC。如果这样做,您的备份会被删除。
先决条件
-
您恢复了
Secret和 APIManager 自定义资源(CR)。
流程
运行以下命令缩减 Red Hat 3scale API Management Operator:
oc scale deployment threescale-operator-controller-manager-v2 --replicas=0 -n threescale
$ oc scale deployment threescale-operator-controller-manager-v2 --replicas=0 -n threescaleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
deployment.apps/threescale-operator-controller-manager-v2 scaled
deployment.apps/threescale-operator-controller-manager-v2 scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建以下脚本以缩减 3scale Operator:
vi ./scaledowndeployment.sh
$ vi ./scaledowndeployment.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 脚本示例:
for deployment in apicast-production apicast-staging backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-searchd system-sidekiq zync zync-database zync-que; do oc scale deployment/$deployment --replicas=0 -n threescale donefor deployment in apicast-production apicast-staging backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-searchd system-sidekiq zync zync-database zync-que; do oc scale deployment/$deployment --replicas=0 -n threescale doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令缩减所有部署 3scale 组件:
./scaledowndeployment.sh
$ ./scaledowndeployment.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来删除
system-mysqlDeployment对象:oc delete deployment system-mysql -n threescale
$ oc delete deployment system-mysql -n threescaleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Warning: apps.openshift.io/v1 deployment is deprecated in v4.14+, unavailable in v4.10000+ deployment.apps.openshift.io "system-mysql" deleted
Warning: apps.openshift.io/v1 deployment is deprecated in v4.14+, unavailable in v4.10000+ deployment.apps.openshift.io "system-mysql" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建以下 YAML 文件以恢复 MySQL 数据库:
restore-mysql.yaml文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来恢复 MySQL 数据库:
oc create -f restore-mysql.yaml
$ oc create -f restore-mysql.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
restore.velerio.io/restore-mysql created
restore.velerio.io/restore-mysql createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证
PodVolumeRestore恢复是否已完成:oc get podvolumerestores.velero.io -n openshift-adp
$ oc get podvolumerestores.velero.io -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME NAMESPACE POD UPLOADER TYPE VOLUME STATUS TOTALBYTES BYTESDONE AGE restore-mysql-rbzvm threescale system-mysql-2-kjkhl kopia mysql-storage Completed 771879108 771879108 40m restore-mysql-z7x7l threescale system-mysql-2-kjkhl kopia example-claim Completed 380415 380415 40m
NAME NAMESPACE POD UPLOADER TYPE VOLUME STATUS TOTALBYTES BYTESDONE AGE restore-mysql-rbzvm threescale system-mysql-2-kjkhl kopia mysql-storage Completed 771879108 771879108 40m restore-mysql-z7x7l threescale system-mysql-2-kjkhl kopia example-claim Completed 380415 380415 40mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证额外的 PVC 是否已恢复:
oc get pvc -n threescale
$ oc get pvc -n threescaleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.21.3.3. 恢复后端 Redis 数据库 复制链接链接已复制到粘贴板!
您可以通过删除部署并指定您不想恢复的资源来恢复后端 Redis 数据库。
先决条件
-
您恢复了 Red Hat 3scale API Management operator 资源、
Secret和 APIManager 自定义资源。 - 您恢复了 MySQL 数据库。
流程
运行以下命令来删除
backend-redis部署:oc delete deployment backend-redis -n threescale
$ oc delete deployment backend-redis -n threescaleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Warning: apps.openshift.io/v1 deployment is deprecated in v4.14+, unavailable in v4.10000+ deployment.apps.openshift.io "backend-redis" deleted
Warning: apps.openshift.io/v1 deployment is deprecated in v4.14+, unavailable in v4.10000+ deployment.apps.openshift.io "backend-redis" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下配置创建 YAML 文件,以恢复 Redis 数据库:
restore-backend.yaml文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 恢复 Redis 备份。
运行以下命令来恢复 Redis 数据库:
oc create -f restore-backend.yaml
$ oc create -f restore-backend.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
restore.velerio.io/restore-backend created
restore.velerio.io/restore-backend createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证
PodVolumeRestore恢复是否已完成:oc get podvolumerestores.velero.io -n openshift-adp
$ oc get podvolumerestores.velero.io -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME NAMESPACE POD UPLOADER TYPE VOLUME STATUS TOTALBYTES BYTESDONE AGE restore-backend-jmrwx threescale backend-redis-1-bsfmv kopia backend-redis-storage Completed 76123 76123 21m
NAME NAMESPACE POD UPLOADER TYPE VOLUME STATUS TOTALBYTES BYTESDONE AGE restore-backend-jmrwx threescale backend-redis-1-bsfmv kopia backend-redis-storage Completed 76123 76123 21mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.21.3.4. 扩展 3scale API 管理操作器和部署 复制链接链接已复制到粘贴板!
您可以扩展 Red Hat 3scale API Management operator 以及手动缩减的任何部署。几分钟后,3scale 安装应完全正常工作,其状态应与备份的状态匹配。
先决条件
-
您恢复了 3scale operator 资源,以及
Secret和 APIManager 自定义资源(CR)。 - 您恢复了 MySQL 和后端 Redis 数据库。
-
确保没有扩展部署,或者没有额外的 pod 运行。一些
system-mysql或backend-redispod 在恢复后从部署分离,可以在恢复成功后删除。
流程
运行以下命令扩展 3scale Operator:
oc scale deployment threescale-operator-controller-manager-v2 --replicas=1 -n threescale
$ oc scale deployment threescale-operator-controller-manager-v2 --replicas=1 -n threescaleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
deployment.apps/threescale-operator-controller-manager-v2 scaled
deployment.apps/threescale-operator-controller-manager-v2 scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,确保 3scale pod 正在运行以验证 3scale Operator 是否已部署:
oc get pods -n threescale
$ oc get pods -n threescaleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE threescale-operator-controller-manager-v2-79546bd8c-b4qbh 1/1 Running 0 2m5s
NAME READY STATUS RESTARTS AGE threescale-operator-controller-manager-v2-79546bd8c-b4qbh 1/1 Running 0 2m5sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建以下脚本以扩展部署:
vi ./scaledeployment.sh
$ vi ./scaledeployment.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 脚本文件示例:
for deployment in apicast-production apicast-staging backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-searchd system-sidekiq zync zync-database zync-que; do oc scale deployment/$deployment --replicas=1 -n threescale donefor deployment in apicast-production apicast-staging backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-searchd system-sidekiq zync zync-database zync-que; do oc scale deployment/$deployment --replicas=1 -n threescale doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来扩展部署:
./scaledeployment.sh
$ ./scaledeployment.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取
3scale-admin路由以登录到 3scale UI:oc get routes -n threescale
$ oc get routes -n threescaleCopy to Clipboard Copied! Toggle word wrap Toggle overflow