Skip to main content
NetApp virtualization solutions
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

使用 OpenShift API for Data Protection (OADP) 为 Red Hat OpenShift 虚拟化中的虚拟机提供数据保护

贡献者 banum-netapp

带有 Velero 的 OpenShift API for Data Protection (OADP) 为 OpenShift Virtualization 中的虚拟机提供备份、恢复和灾难恢复功能。使用Trident CSI 快照将持久卷和 VM 元数据备份到NetApp ONTAP S3 或StorageGRID S3。 OADP 与 Velero API 和 CSI 存储驱动程序集成,以管理容器化虚拟机的数据保护操作。

OpenShift 虚拟化环境中的虚拟机是在 OpenShift 容器平台的工作节点中运行的容器化应用程序。保护虚拟机元数据以及虚拟机的持久磁盘非常重要,以便在它们丢失或损坏时可以恢复它们。

OpenShift 虚拟化虚拟机的持久磁盘可由集成到 OpenShift 集群的ONTAP存储支持,使用"Trident犯罪现场调查"。在本节中我们使用"OpenShift 数据保护 API (OADP)"执行虚拟机(包括其数据卷)的备份

  • ONTAP对象存储

  • 存储网格

然后我们在需要时从备份中恢复。

OADP 支持 OpenShift 集群上应用程序的备份、还原和灾难恢复。可以使用 OADP 保护的数据包括 Kubernetes 资源对象、持久卷和内部图像。

OpenShift 数据保护 API

Red Hat OpenShift 利用开源社区开发的数据保护解决方案。"维莱罗" 是一个开源工具,用于安全备份和还原、执行灾难恢复以及迁移 Kubernetes 集群资源和持久卷。为了轻松使用 Velero,OpenShift 开发了 OADP 运算符和 Velero 插件,以与 CSI 存储驱动程序集成。公开的 OADP API 的核心基于 Velero API。安装 OADP 运算符并进行配置后,可以执行的备份/还原操作基于 Velero API 公开的操作。

OpenShift 数据保护 API

OADP 1.3 可从 OpenShift 集群 4.12 及更高版本的操作员中心获得。它有一个内置的数据移动器,可以将 CSI 卷快照移动到远程对象存储。通过在备份期间将快照移动到对象存储位置,这提供了可移植性和耐用性。灾难发生后,快照可用于恢复。

以下是本节示例中使用的各种组件

  • OpenShift 集群 4.14

  • 通过 Red Hat 提供的 OpenShift Virtualization Operator 安装 OpenShift Virtualization

  • OADP Operator 1.3 由 Red Hat 提供

  • 适用于 Linux 的 Velero CLI

  • 适用于 ONTAP 的 Trident 24.02 CSI 驱动程序

  • ONTAP 9.12

使用 Velero 为 Red Hat OpenShift Virtualization 中的虚拟机创建按需备份

使用 Velero 和NetApp ONTAP S3 或StorageGRID在 OpenShift Virtualization 中备份虚拟机。此过程包括为按需备份创建备份自定义资源 (CR) 和为计划备份创建计划 CR。每个备份都会捕获虚拟机元数据和持久卷,并将它们存储在指定的对象存储位置以用于恢复或合规目的。

创建虚拟机备份的步骤

要创建整个 VM(VM 元数据和 VM 磁盘)的按需备份,请单击“备份”选项卡。这将创建一个备份自定义资源 (CR)。提供了一个示例 yaml 来创建备份 CR。使用此 yaml,将备份指定命名空间中的 VM 及其磁盘。可以设置其他参数,如下所示"文档"

CSI 将创建支持磁盘的持久卷的快照。创建虚拟机的备份及其磁盘的快照,并将其存储在 yaml 中指定的备份位置。备份将按照 ttl 的规定在系统中保留 30 天。

apiVersion: velero.io/v1
kind: Backup
metadata:
  name: backup1
  namespace: openshift-adp
spec:
  includedNamespaces:
  - virtual-machines-demo
  snapshotVolumes: true
  storageLocation: velero-demo-1
  ##velero-demo-1 is the backupStorageLocation
  ##previously created when Velero is configured.

  ttl: 720h0m0s

备份完成后,其阶段将显示为已完成。

备份完成

您可以借助 S3 浏览器应用程序检查对象存储中的备份。备份路径显示在配置的存储桶中,前缀名称为(velero/demobackup)。您可以看到备份的内容包括虚拟机的卷快照、日志和其他元数据。

备注 在 StorageGrid 中,您还可以使用租户管理器提供的 S3 控制台来查看备份对象。

S3 中的备份对象

创建定时备份

要按计划创建备份,需要创建 Schedule CR。计划只是一个 Cron 表达式,允许您指定要创建备份的时间。用于创建 Schedule CR 的示例 yaml。

apiVersion: velero.io/v1
kind: Schedule
metadata:
  name: <schedule>
  namespace: openshift-adp
spec:
  schedule: 0 7 * * *
  template:
    hooks: {}
    includedNamespaces:
    - <namespace>
    storageLocation: velero-demo-1
    defaultVolumesToFsBackup: true
    ttl: 720h0m0s

Cron表达式 0 7 * * * 表示每天7:00创建备份。还指定了要包含在备份中的命名空间和备份的存储位置。因此,不是使用备份 CR,而是使用计划 CR 在指定的时间和频率创建备份。

一旦创建了计划,它将被启用。

已创建计划

备份将根据此计划创建,并可从“备份”选项卡中查看。

已创建计划

使用 Velero 从 Red Hat OpenShift Virtualization 中的备份恢复虚拟机

使用 Velero 和 OpenShift API for Data Protection (OADP) 在 OpenShift Virtualization 中恢复虚拟机。此过程包括创建恢复自定义资源 (CR) 以从备份中恢复虚拟机及其持久卷,并可选择恢复到原始命名空间、不同的命名空间或使用备用存储类。

前提条件

为了从备份中恢复,我们假设虚拟机所在的命名空间被意外删除了。

还原到同一命名空间

Details

要从我们刚刚创建的备份中恢复,我们需要创建一个恢复自定义资源 (CR)。我们需要为其提供一个名称,提供我们想要从中恢复的备份的名称,并将 restorePVs 设置为 true。可以设置其他参数,如下所示"文档"。单击创建按钮。

创建恢复 CR

apiVersion: velero.io/v1
kind: Restore
metadata:
  name: restore1
  namespace: openshift-adp
spec:
  backupName: backup1
  restorePVs: true

当阶段显示完成时,您可以看到虚拟机已恢复到拍摄快照时的状态。 (如果备份是在虚拟机运行时创建的,则从备份恢复虚拟机将启动恢复的虚拟机并使其处于运行状态)。 VM 恢复到相同的命名空间。

恢复完成

还原到不同的命名空间

Details

要将 VM 恢复到不同的命名空间,您可以在 Restore CR 的 yaml 定义中提供 namespaceMapping。

以下示例 yaml 文件创建一个恢复 CR,以在将备份带到虚拟机命名空间时恢复虚拟机及其磁盘在虚拟机-demo 命名空间中。

apiVersion: velero.io/v1
kind: Restore
metadata:
  name: restore-to-different-ns
  namespace: openshift-adp
spec:
  backupName: backup
  restorePVs: true
  includedNamespaces:
  - virtual-machines-demo
  namespaceMapping:
    virtual-machines-demo: virtual-machines

当阶段显示完成时,您可以看到虚拟机已恢复到拍摄快照时的状态。 (如果备份是在虚拟机运行时创建的,则从备份恢复虚拟机将启动恢复的虚拟机并使其处于运行状态)。 VM 已恢复到 yaml 中指定的不同命名空间。

恢复到新命名空间已完成

还原到不同的存储类别

Details

Velero 提供了通过指定 json 补丁来修改恢复期间资源的通用功能。在恢复资源之前,json 补丁会应用到资源上。json 补丁在 configmap 中指定,并且在 restore 命令中引用该 configmap。此功能使您能够使用不同的存储类别进行恢复。

在下面的示例中,虚拟机在创建期间使用 ontap-nas 作为其磁盘的存储类。创建了名为backup1的虚拟机备份。

使用 ontap-nas 的虚拟机

虚拟机备份 ontap-nas

通过删除虚拟机来模拟虚拟机的丢失。

要使用不同的存储类(例如 ontap-nas-eco 存储类)恢复虚拟机,您需要执行以下两个步骤:

步骤 1

在 openshift-adp 命名空间中创建一个配置映射(控制台),如下所示: 填写屏幕截图中显示的详细信息: 选择命名空间:openshift-adp 名称:change-storage-class-config(可以是任意名称) 键:change-storage-class-config.yaml: 值:

version: v1
resourceModifierRules:
  - conditions:
      groupResource: persistentvolumeclaims
      resourceNameRegex: "^rhel*"
      namespaces:
        - virtual-machines-demo
    patches:
      - operation: replace
        path: "/spec/storageClassName"
        value: "ontap-nas-eco"

配置地图用户界面

生成的配置映射对象应如下所示(CLI):

配置地图 CLI

此配置图将在创建恢复时应用资源修改规则。将应用补丁程序将以 rhel 开头的所有持久卷声明的存储类名称替换为 ontap-nas-eco。

步骤 2

要恢复虚拟机,请使用 Velero CLI 中的以下命令:

#velero restore create restore1 --from-backup backup1 --resource-modifier-configmap change-storage-class-config -n openshift-adp

虚拟机与使用存储类 ontap-nas-eco 创建的磁盘在同一命名空间中恢复。

VM 还原 ontap-nas-eco

使用 Velero 在 Red Hat OpenShift Virtualization 中删除备份 CR 或恢复 CR

使用 Velero 删除 OpenShift Virtualization 中虚拟机的备份和恢复资源。使用 OpenShift CLI 删除备份同时保留对象存储数据,或者使用 Velero CLI 删除备份自定义资源 (CR) 和相关存储数据。

删除备份

您可以使用 OC CLI 工具删除备份 CR,而不删除对象存储数据。

oc delete backup <backup_CR_name> -n <velero_namespace>

如果要删除备份 CR 并删除关联的对象存储数据,可以使用 Velero CLI 工具进行此操作。

"velero.io" 下载 Velero CLI。使用与您的 OADP operator 版本兼容的版本。您可以从文档 "此处" 中找到兼容版本。

使用 Velero CLI 执行以下删除命令

velero backup delete <backup_CR_name> -n <velero_namespace>

删除还原

您可以使用 Velero CLI 删除 Restore CR

velero restore delete restore --namespace openshift-adp

您可以使用 oc 命令以及 UI 来删除恢复 CR

oc delete restore <restore_CR_name> -n <velero_namespace>