4.3. OADP 功能和插件


OpenShift API 用于数据保护(OADP)功能,提供用于备份和恢复应用的选项。

默认插件使 Velero 能够与某些云供应商集成,并备份和恢复 OpenShift Container Platform 资源。

4.3.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.3.2. OADP 插件

用于数据保护(OADP)的 OpenShift API 提供了与存储供应商集成的默认 Velero 插件,以支持备份和恢复操作。您可以根据 Velero 插件创建自定义插件

OADP 还为 OpenShift Container Platform 资源备份、OpenShift Virtualization 资源备份和 Container Storage Interface(CSI)快照提供了插件。

表 4.1. OADP 插件
OADP 插件功能存储位置

aws

备份和恢复 Kubernetes 对象。

AWS S3

使用快照备份和恢复卷。

AWS EBS

azure

备份和恢复 Kubernetes 对象。

Microsoft Azure Blob 存储

使用快照备份和恢复卷。

Microsoft Azure 管理的磁盘

gcp

备份和恢复 Kubernetes 对象。

Google Cloud Storage

使用快照备份和恢复卷。

Google Compute Engine 磁盘

openshift

备份和恢复 OpenShift Container Platform 资源。[1]

对象存储

kubevirt

备份和恢复 OpenShift Virtualization 资源。[2]

对象存储

csi

使用 CSI 快照备份和恢复卷。[3]

支持 CSI 快照的云存储

vsm

VolumeSnapshotMover 将快照从集群重新定位到一个在恢复过程中使用的对象存储中以恢复有状态的应用程序,例如集群删除的情况。[4]

对象存储

  1. 必需。
  2. 虚拟机磁盘使用 CSI 快照或 Restic 备份。
  3. csi 插件使用 Kubernetes CSI 快照 API。

    • OADP 1.1 或更高版本使用 snapshot.storage.k8s.io/v1
    • OADP 1.0 使用 snapshot.storage.k8s.io/v1beta1
  4. 仅限 OADP 1.2。

4.3.3. 关于 OADP Velero 插件

安装 Velero 时,您可以配置两种类型的插件:

  • 默认云供应商插件
  • 自定义插件

两种类型的插件都是可选的,但大多数用户都会至少配置一个云供应商插件。

4.3.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 文件会安装 openshiftawsazuregcp 插件:

 apiVersion: oadp.openshift.io/v1alpha1
 kind: DataProtectionApplication
 metadata:
   name: dpa-sample
 spec:
   configuration:
     velero:
       defaultPlugins:
       - openshift
       - aws
       - azure
       - gcp

4.3.3.2. 自定义 Velero 插件

您可在部署期间配置 oadp_v1alpha1_dpa.yaml 文件时,通过指定插件 镜像名称来安装自定义 Velero 插件。

在部署过程中,您可以在 oadp_v1alpha1_dpa.yaml 文件中指定所需的自定义插件。

示例文件

以下 .yaml 文件会安装默认的 openshiftazuregcp 插件,以及一个自定义插件,其名称为 custom-plugin-example 和镜像 quay.io/example-repo/custom-velero-plugin

apiVersion: oadp.openshift.io/v1alpha1
kind: DataProtectionApplication
metadata:
 name: dpa-sample
spec:
 configuration:
   velero:
     defaultPlugins:
     - openshift
     - azure
     - gcp
     customPlugins:
     - name: custom-plugin-example
       image: quay.io/example-repo/custom-velero-plugin

4.3.3.3. Velero 插件返回 "received EOF, stop recv loop" 信息

注意

Velero 插件作为单独的进程启动。当 Velero 操作完成后,无论是否成功,它们都会退出。接收到 received EOF, stopping recv loop 消息表示插件操作已完成。这并不意味着发生了错误。

4.3.4. OADP 支持的构架

OpenShift API for Data Protection (OADP) 支持以下构架:

  • AMD64
  • ARM64
  • PPC64le
  • s390x
注意

OADP 1.2.0 及更新版本支持 ARM64 架构。

4.3.5. OADP 支持 IBM Power 和 IBM Z

OpenShift API for Data Protection (OADP) 是一个平台中立的平台。以下的信息只与 IBM Power® 和 IBM Z® 相关。

  • OADP 1.1.7 对于 IBM Power® 和 IBM Z® 均针对 OpenShift Container Platform 4.11 进行了成功测试。以下章节提供了在这些系统的备份位置上 OADP 1.1.7 的测试和支持信息。
  • OADP 1.2.3 对于 IBM Power® 和 IBM Z®,针对 OpenShift Container Platform 4.12、4.13、4.14 和 4.15 进行了成功测试。以下章节提供了在这些系统的备份位置上 OADP 1.2.3 的测试和支持信息。
  • OADP 1.3.3 对于 IBM Power® 和 IBM Z®,针对 OpenShift Container Platform 4.12、4.13、4.14 和 4.15 进行了成功测试。以下章节提供了在这些系统的备份位置上 OADP 1.3.3 的测试和支持信息。
  • OADP 1.4.1 对于 IBM Power® 和 IBM Z®,针对 OpenShift Container Platform 4.12、4.14、4.15 和 4.16 进行了成功测试。以下章节提供了在这些系统的备份位置上 OADP 1.4.1 的测试和支持信息。

4.3.5.1. OADP 支持使用 IBM Power 的目标备份位置

  • 在 IBM Power® 中运行 OpenShift Container Platform 4.11 和 4.12,以及 OpenShift API for Data Protection (OADP) 1.1.7 已针对 AWS S3 备份位置目标成功进行了测试。虽然测试只涉及一个 AWS S3 目标,但红帽也支持在 OpenShift Container Platform 4.11 和 4.12 中运行 IBM Power®,以及针对所有 S3 备份位置目标(不是 AWS)运行 OADP 1.1.7。
  • 使用 OpenShift Container Platform 4.12、4.13、4.14 和 4.15 和 OADP 1.2.3 运行的 IBM Power® 已针对 AWS S3 备份位置目标成功进行了测试。虽然测试只涉及一个 AWS S3 目标,但红帽也支持针对所有 S3 备份位置目标,使用 OpenShift Container Platform 4.12、4.13. 4.14 和 4.15 和 OADP 1.2.3 运行 IBM Power®。
  • 使用 OpenShift Container Platform 4.12、4.13、4.14 和 4.15 和 OADP 1.3.3 运行的 IBM Power® 已针对 AWS S3 备份位置目标成功进行了测试。虽然测试只涉及一个 AWS S3 目标,但红帽也支持针对所有的 S3 备份位置目标(不是 AWS),在 IBM Power® 中使用 OpenShift Container Platform 4.13、4.14 和 4.15 和 OADP 1.3.3。
  • 使用 OpenShift Container Platform 4.14、4.15 和 4.16 和 OADP 1.4.1 运行的 IBM Power® 已针对 AWS S3 备份位置目标成功进行了测试。虽然测试只涉及一个 AWS S3 目标,但红帽也支持针对所有的 S3 备份位置目标(不是 AWS),在 IBM Power® 中使用 OpenShift Container Platform 4.14、4.15 和 4.16 和 OADP 1.4.1。

4.3.5.2. OADP 测试并支持使用 IBM Z 的目标备份位置

  • 在 IBM Z® 中运行 OpenShift Container Platform 4.11 和 4.12,以及 OpenShift API for Data Protection (OADP) 1.1.7 已针对 AWS S3 备份位置目标成功进行了测试。虽然测试只涉及一个 AWS S3 目标,但红帽也支持在 OpenShift Container Platform 4.11 和 4.12 中运行 IBM Z®,以及针对所有的 S3 备份位置目标(不是 AWS)运行 OADP 1.1.7。
  • 使用 OpenShift Container Platform 4.12、4.13、4.14 和 4.15 和 OADP 1.2.3 运行的 IBM Z® 已针对 AWS S3 备份位置目标成功进行了测试。虽然测试只涉及一个 AWS S3 目标,但红帽也支持针对所有的 S3 备份位置目标,使用 OpenShift Container Platform 4.12、4.13、4.14 和 4.15 和 OADP 1.2.3 运行 IBM Z®。
  • 使用 OpenShift Container Platform 4.12、4.13、4.14 和 4.15 和 OADP 1.3.3 运行的 IBM Z® 已针对 AWS S3 备份位置目标成功进行了测试。虽然测试只涉及一个 AWS S3 目标,但红帽也支持针对所有的 S3 备份位置目标(不是 AWS),在 IBM Z® 中使用 OpenShift Container Platform 4.13、4.14 和 4.15 和 OADP 1.3.3。
  • 使用 OpenShift Container Platform 4.14、4.15 和 4.16 和 OADP 1.4.1 运行的 IBM Z® 已针对 AWS S3 备份位置目标成功进行了测试。虽然测试只涉及一个 AWS S3 目标,但红帽还支持在 IBM Z® 中运行 OpenShift Container Platform 4.14、4.15 和 4.16,以及针对所有 S3 备份位置目标(不是 AWS)的 1.4.1。
4.3.5.2.1. 使用 IBM Power (R) 和 IBM Z (R) 平台的 OADP 已知问题
  • 目前,在 IBM Power® 和 IBM Z® 平台上部署的单节点 OpenShift 集群的备份方法限制。目前,只有 NFS 存储与这些平台上的单节点 OpenShift 集群兼容。另外,只支持文件系统备份 (FSB) 方法,如 Kopia 和 Restic 用于备份和恢复操作。当前没有解决此问题的方法。

4.3.6. OADP 插件的已知问题

以下章节介绍了 OpenShift API for Data Protection (OADP) 插件中的已知问题:

4.3.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…
4.3.6.1.1. 临时解决方案以避免出现错误

要避免 Velero 插件 panic 错误,请执行以下步骤:

  1. 使用相关标签标记自定义 BSL:

    $ oc label BackupStorageLocation <bsl_name> app.kubernetes.io/component=bsl
  2. 在标记 BSL 后,等待 DPA 协调。

    注意

    您可以通过对 DPA 本身进行任何更改来强制进行协调。

  3. 当 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'

4.3.6.2. OpenShift ADP Controller 分段错误

如果您在同时启用了 cloudstoragerestic 的情况下配置 DPA,openshift-adp-controller-manager pod 会无限期重复崩溃和重启过程,直到 pod 出现一个崩溃循环分段错误为止。

您只能定义 velerocloudstorage,它们是互斥的字段。

  • 如果您同时定义了 velerocloudstorageopenshift-adp-controller-manager 会失败。
  • 如果 velerocloudstorage 都没有定义,openshift-adp-controller-manager 也将失败。

有关此问题的更多信息,请参阅 OADP-1054

4.3.6.2.1. OpenShift ADP Controller 分段错误临时解决方案

在配置一个 DPA 时,您必须定义 velerocloudstorage。如果您在 DPA 中同时定义了这两个 API,openshift-adp-controller-manager pod 会失败,并显示崩溃循环分段错误。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.