×

OADP 功能

OpenShift 数据保护 API (OADP) 支持以下功能

备份

您可以使用 OADP 备份 OpenShift 平台上的所有应用程序,也可以按类型、命名空间或标签过滤资源。

OADP 通过将 Kubernetes 对象和内部镜像保存为对象存储上的存档文件来备份它们。OADP 通过使用本地云快照 API 或容器存储接口 (CSI) 创建快照来备份持久卷 (PV)。对于不支持快照的云提供商,OADP 使用 Restic 备份资源和 PV 数据。

为了成功备份和恢复,您必须从应用程序备份中排除 Operators。

恢复

您可以从备份中恢复资源和 PV。您可以恢复备份中的所有对象,也可以按命名空间、PV 或标签过滤对象。

为了成功备份和恢复,您必须从应用程序备份中排除 Operators。

调度

您可以按指定的时间间隔安排备份。

钩子

您可以使用钩子在 Pod 中的容器上运行命令,例如fsfreeze 来冻结文件系统。您可以配置钩子在备份或恢复之前或之后运行。恢复钩子可以在 init 容器或应用程序容器中运行。

OADP 插件

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

OADP 还提供用于 OpenShift Container Platform 资源备份、OpenShift 虚拟化资源备份和容器存储接口 (CSI) 快照的插件。

表 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。

关于 OADP Velero 插件

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

  • 默认云提供商插件

  • 自定义插件

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

默认 Velero 云提供商插件

在部署期间配置 oadp_v1alpha1_dpa.yaml 文件时,您可以安装以下任何默认 Velero 云提供商插件

  • aws (Amazon Web Services)

  • gcp (Google Cloud Platform)

  • azure (Microsoft Azure)

  • openshift (OpenShift Velero 插件)

  • csi (容器存储接口)

  • 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

自定义 Velero 插件

在部署期间配置 oadp_v1alpha1_dpa.yaml 文件时,您可以通过指定插件 imagename 来安装自定义 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

Velero 插件返回“received EOF, stopping recv loop”消息

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

OADP 支持的架构

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

  • AMD64

  • ARM64

  • PPC64le

  • s390x

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

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.14、4.15 和 4.16 进行了测试。以下部分提供了 OADP 1.4.1 在这些系统的备份位置方面的测试和支持信息。

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

  • 运行 OpenShift Container Platform 4.11 和 4.12 的 IBM Power®,以及 OADP 1.1.7 已成功针对 AWS S3 备份位置目标进行了测试。尽管测试仅涉及 AWS S3 目标,但 Red Hat 也支持在所有非 AWS 的 S3 备份位置目标上运行 IBM Power®、OpenShift Container Platform 4.11 和 4.12 以及 OADP 1.1.7。

  • 运行 OpenShift Container Platform 4.12、4.13、4.14 和 4.15 的 IBM Power®,以及 OADP 1.2.3 已成功针对 AWS S3 备份位置目标进行了测试。尽管测试仅涉及 AWS S3 目标,但 Red Hat 也支持在所有非 AWS 的 S3 备份位置目标上运行 IBM Power®、OpenShift Container Platform 4.12、4.13、4.14 和 4.15 以及 OADP 1.2.3。

  • 运行 OpenShift Container Platform 4.12、4.13、4.14 和 4.15 的 IBM Power®,以及 OADP 1.3.3 已成功针对 AWS S3 备份位置目标进行了测试。尽管测试仅涉及 AWS S3 目标,但 Red Hat 也支持在所有非 AWS 的 S3 备份位置目标上运行 IBM Power®、OpenShift Container Platform 4.13、4.14 和 4.15 以及 OADP 1.3.3。

  • 运行 OpenShift Container Platform 4.14、4.15 和 4.16 的 IBM Power®,以及 OADP 1.4.1 已成功针对 AWS S3 备份位置目标进行了测试。尽管测试仅涉及 AWS S3 目标,但 Red Hat 也支持在所有非 AWS 的 S3 备份位置目标上运行 IBM Power®、OpenShift Container Platform 4.14、4.15 和 4.16 以及 OADP 1.4.1。

OADP 对使用 IBM Z 的目标备份位置的测试和支持

  • 运行 OpenShift Container Platform 4.11 和 4.12 的 IBM Z®,以及 OpenShift API for Data Protection (OADP) 1.1.7 已成功针对 AWS S3 备份位置目标进行了测试。尽管测试仅涉及 AWS S3 目标,但 Red Hat 也支持在所有非 AWS 的 S3 备份位置目标上运行 IBM Z®、OpenShift Container Platform 4.11 和 4.12 以及 OADP 1.1.7。

  • 在 AWS S3 备份位置目标上成功测试了运行 OpenShift Container Platform 4.12、4.13、4.14 和 4.15 以及 OADP 1.2.3 的 IBM Z®。虽然测试只涉及 AWS S3 目标,但 Red Hat 也支持在所有非 AWS 的 S3 备份位置目标上运行 OpenShift Container Platform 4.12、4.13、4.14 和 4.15 以及 OADP 1.2.3 的 IBM Z®。

  • 在 AWS S3 备份位置目标上成功测试了运行 OpenShift Container Platform 4.12、4.13、4.14 和 4.15 以及 1.3.3 的 IBM Z®。虽然测试只涉及 AWS S3 目标,但 Red Hat 也支持在所有非 AWS 的 S3 备份位置目标上运行 OpenShift Container Platform 4.13、4.14 和 4.15 以及 1.3.3 的 IBM Z®。

  • 在 AWS S3 备份位置目标上成功测试了运行 OpenShift Container Platform 4.14、4.15 和 4.16 以及 1.4.1 的 IBM Z®。虽然测试只涉及 AWS S3 目标,但 Red Hat 也支持在所有非 AWS 的 S3 备份位置目标上运行 OpenShift Container Platform 4.14、4.15 和 4.16 以及 1.4.1 的 IBM Z®。

OADP 使用 IBM Power® 和 IBM Z® 平台的已知问题

  • 目前,在 IBM Power® 和 IBM Z® 平台上部署的单节点 OpenShift 集群存在备份方法限制。只有 NFS 存储与这些平台上的单节点 OpenShift 集群兼容。此外,仅支持文件系统备份 (FSB) 方法(例如 Kopia 和 Restic)进行备份和恢复操作。目前没有解决此问题的办法。

OADP 插件已知问题

以下部分描述了 OpenShift 数据保护 API (OADP) 插件中的已知问题。

由于缺少密钥,Velero 插件在镜像流备份期间发生崩溃

当备份和备份存储位置 (BSL) 在数据保护应用程序 (DPA) 范围之外管理时,OADP 控制器(即 DPA 调和)不会创建相关的oadp-<bsl_name>-<bsl_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…

避免崩溃错误的解决方法

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

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

    $ oc label backupstoragelocations.velero.io <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'

OpenShift ADP 控制器段错误

如果您同时启用cloudstoragerestic配置 DPA,则openshift-adp-controller-manager pod 会无限期地崩溃和重启,直到 pod 因崩溃循环段错误而失败。

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

  • 如果您同时定义了velerocloudstorage,则openshift-adp-controller-manager会失败。

  • 如果您既没有定义velero也没有定义cloudstorage,则openshift-adp-controller-manager会失败。

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

OpenShift ADP 控制器段错误的解决方法

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