1.2. 使用策略配置 Red Hat OpenShift Virtualization 的备份和恢复


使用 OpenShift APIs for Data Protection (OADP) 来备份和恢复虚拟机。备份虚拟机后,您可以将其还原到中心集群或托管集群上。

这些适用于 OpenShift 虚拟化的 Red Hat 高级集群管理策略支持以下备份和恢复存储选项:

  • 容器存储接口 (CSI) 备份
  • 使用 DataMover 进行容器存储接口 (CSI) 备份

他们不支持以下选项:

  • 文件系统备份和恢复
  • 卷快照备份和恢复

要配置策略,并启用备份计划或运行虚拟机的还原操作,请完成以下部分:

1.2.1. 备份和恢复虚拟机

您可以通过完成以下步骤来备份集群上运行的虚拟机或还原集群上的虚拟机:

  1. 通过将MultiClusterHub中的cluster-backup参数设置为true,在中心集群上启用备份组件。
  2. 要将策略部署到cluster-name集群,请通过应用以下 YAML 示例,将acm-virt-config标签添加到ManagedCluster资源:

    apiVersion: cluster.open-cluster-management.io/v1
    kind: ManagedCluster
    metadata:
     name: cluster-name
     labels:
       acm-virt-config: acm-dr-virt-config 
    1
    Copy to Clipboard Toggle word wrap
    1
    通过标签注释传递的acm-dr-virt-config是一个acm-virt-config ConfigMap。请阅读acm-dr-virt-config ConfigMap 部分,了解如何配置 OADP 和备份存储位置。
  3. 根据您要备份还是还原虚拟机,完成以下步骤:

    1. 通过将cluster.open-cluster-management.io/backup-vm添加到kubevirt.io.VirtualMachine资源来备份您的虚拟机。您的kubevirt.io.VirtualMachine资源可能类似于以下 YAML 示例:
    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: vm-name
      labels:
        cluster.open-cluster-management.io/backup-vm: daily_8am
    Copy to Clipboard Toggle word wrap
    1. 按照acm-dr-virt-restore-config部分所述,通过更新acm-dr-restore-config ConfigMap 来恢复虚拟机。

1.2.2. 中心集群上安装的虚拟化策略

启用备份操作员时,将在中心集群上安装一组 Red Hat 高级集群管理策略和ConfigMap 。禁用策略或将其从集群中移除时,该策略创建的所有资源都将被移除。要了解不同类型的保险政策,请完成以下部分:

1.2.2.1. 安装策略

acm-dr-virt-install安装策略会在放置此策略的集群上安装 OADP 并配置oadp.openshift.io.DataProtectionApplication资源。如果集群是中心集群,它会验证 OADP 是否安装在open-cluster-management-backup命名空间中,以及DataProtectionApplication资源是否存在并具有所需的配置。该策略不会尝试在中心集群上安装 OADP 或创建DataProtectionApplication资源。

当您在MultiClusterHub资源上启用集群备份选项时,备份图表会安装 OADP。启用集群备份选项后,将在中心集群上创建数据保护应用程序。

请参阅以下安装策略模板和说明:

  1. 安装策略模板
Expand

模板

描述

check-config-file

验证由ManagedCluster资源上的acm-virt-config标签集定义的 ConfigMap 是否存在于中心集群的open-cluster-management-backup命名空间中。

check-oadp-channel

验证集群上是否安装了 OADP 版本,以及该版本是否与策略安装的版本匹配。

check-dpa-config

验证DataProtectionApplication资源是否存在,是否具有预期的配置,以及是否处于已协调状态。验证BackupStorageLocation是否存在且处于可用状态。

install-oadp-copy-config

如果找不到 OADP 安装命名空间,则创建该命名空间。复制 OADP 密钥并安装 OADP,但仅适用于受管集群。创建由acm-virt-config标签定义的DataProtectionApplication资源,但仅适用于受管集群。用户必须在中心集群上手动创建 OADP 和DataPotectionApplication

1.2.2.2. 备份策略

acm-dr-virt-backup备份策略备份具有标签cluster.open-cluster-management.io/backup-vm: schedule_cron_namekubevirt.io.VirtualMachine资源。

请参阅以下备份策略模板和说明:

  1. 备份策略模板
Expand

模板

描述

check-cron-schedule-valid

如果虚拟机cluster.open-cluster-management.io/backup-vm标签使用的任何 cron 计划名称在 cron 计划的 ConfigMap 中找不到,则会显示违规错误。cron 计划的 ConfigMap 的名称由schedule_hub_config_name属性定义,并且在open-cluster-management-backup 命名空间中可用。

check-backup-status-completed

如果计划未暂停,则验证状态是否为“已启用” 。查找此计划生成的最新备份,并验证其状态是否为“已完成” 。如果已为此备份创建任何数据上传,则状态为“已完成” 。如果这些条件中任何一个不成立,则表示违规。

create-virt-backup

为所有带有cluster.open-cluster-management.io/backup-vm标签的虚拟机资源创建 Velero 调度。为找到的每个带有“虚拟机”标签的 cron 作业计划创建一个计划。在同一备份中,备份共享同一 cron 作业计划的虚拟机。仅当acm-dr-virt-install策略符合要求时,才创建 Velero 调度资源。

1.2.2.3. 恢复策略

acm-dr-virt-restore恢复策略按 UID 恢复kubevirt.io.VirtualMachine资源。该策略使用 ConfigMap 中由acm-dr-virt-config ConfigMap 的restore_hub_config_name属性标识的信息,在集群上创建 Velero 恢复资源。

请参阅以下恢复策略模板和说明:

  1. 恢复策略模板
Expand

模板

描述

check-velero-restore-status

验证具有clusterID_restoreName属性定义的名称的还原资源是否存在,并且状态为“已完成”

create-velero-restore

如果clusterID_restoreName属性值不为空,并且clusterID与此集群 UID 匹配,则它会使用由restore_hub_config_name标识的 ConfigMap 定义的属性创建 Velero 恢复资源。仅当acm-dr-virt-install策略符合要求时,才创建 Velero 恢复资源。

1.2.3. 使用ConfigMap定义策略

在中心集群上安装策略时,将在中心集群的open-cluster-management-backup命名空间中创建以下ConfigMap 。当您将虚拟化策略放置在中心或受管集群上时,这些ConfigMap定义了虚拟化策略的备份和恢复配置。

1.2.3.1. 定义acm-dr-virt-config配置映射

acm-dr-virt-config ConfigMap 定义了 OADP 配置以及与备份或恢复操作相关的其他设置。您可以将此资源的名称用作acm-virt-config标签的值,该标签设置在放置策略的 ManagedCluter上。您还可以创建一个新的ConfigMap资源,以acm-dr-virt-config作为示例,然后使用新的ConfigMap资源将虚拟化策略放置在集群上。

要将虚拟化策略部署到托管集群或中心集群上,请完成以下步骤:

  1. 使用acm-dr-virt-config或在open-cluster-management-backup命名空间的中心集群上创建一个新的ConfigMap资源,以acm-dr-virt-config ConfigMap 为例。在这个例子中,ConfigMap 的名称是acm-dr-virt-config-new

    1. 更新dpa_spec部分,使其与您希望存储 OADP 创建的备份的存储位置相匹配。这是必要的更新。
    2. 可选:更新acm-dr-virt-config-new ConfigMap 中提供的其他属性,例如 OADP 版本或通道。
  2. acm-virt-config=acm-dr-virt-config-new标签添加到ManagedCluster资源。acm-virt-config标签的值是您创建的 ConfigMap 的名称。

有关使用acm-dr-virt-config-new ConfigMap 的虚拟化备份标签的ManagedCluster资源的示例,请参见以下 YAML 示例:

apiVersion: cluster.open-cluster-management.io/v1
kind: ManagedCluster
metadata:
 name: managed-cluster-name
 labels:
   acm-virt-config: acm-dr-virt-config-new
Copy to Clipboard Toggle word wrap

欲了解更多信息,请参阅下表:

  1. acm-dr-virt-install策略的 ConfigMap 属性
Expand

Name

描述

类型

默认值

选填

channel

该通道默认使用受支持的 OADP 版本,该版本基于 OpenShift 容器平台集群的版本。使用此属性可以覆盖默认值。

字符串

None

channelName

OADP通道名称。设置此属性以进行自定义安装,例如:离线安装

字符串

redhat-oadp-operator

subscriptionSource

OADP订阅。设置此属性以进行自定义安装,例如:离线安装

字符串

redhat-operators

subscriptionSourceNamespace

OADP订阅来源。设置此属性以进行自定义安装,例如:离线安装

字符串

openshift-marketplace

subscriptionStartingCSV

OADP订阅开始CSV。

字符串

None

subscriptionInstallPlanApproval

OADP安装计划。

字符串

自动

backupNS

OADP 在受管集群上的安装位置的命名空间。

字符串

None

credentials_hub_secret_name

在受管集群上使用的 OADP 密钥的名称。中心集群的open-cluster-management-backup命名空间中必须存在具有此名称的 Secret。安装策略会将此密钥移动到指定backupNS命名空间内的中心集群。

字符串

None

credentials_name

设置 Velero 凭据名称时,托管集群上的 OADP DataProtectionApplication资源使用的密钥名称。

JSON

None

dpa_name

在受管集群上创建的DataProtectionApplication资源的名称。

字符串

None

dpa_spec

在托管集群上创建 DataProtectionApplication 时,定义DataProtectionApplication规范的有效 JSON。

JSON

None

  1. acm-dr-virt-backup策略的 ConfigMap 属性
Expand

Name

描述

类型

默认值

选填

scheduleTTL

备份过期时间。

字符串

24h0m0s

schedule_paused

设置为True可暂停虚拟化备份计划。

字符串

False

schedule_hub_config_name

用于定义有效 cron 作业计划的 ConfigMap 的名称。在open-cluster-management-backup命名空间中的中心集群上必须存在具有此名称的 ConfigMap。

字符串

None

  1. acm-dr-virt-restore策略的 ConfigMap 属性
Expand

Name

描述

类型

默认值

选填

restore_hub_config_name

用于定义还原操作的 ConfigMap 的名称。中心集群的open-cluster-management-backup命名空间中必须存在具有此名称的 ConfigMap。

字符串

None

1.2.3.2. 定义acm-dr-virt-schedule-cron配置映射

使用acm-dr-virt-schedule-cron ConfigMap 定义在安排虚拟机备份时要使用的有效 cron 作业计划。acm-dr-virt-schedule-cron ConfigMap 由open-cluster-management-backup命名空间中的中心集群备份组件创建,并包含以下 YAML:

apiVersion: v1
kind: ConfigMap
    metadata:
        name: acm-dr-virt-schedule-cron
        namespace: open-cluster-management-backup
    data:
        hourly: "0 */1 * * *"
        every_2_hours: "0 */2 * * *"
        every_3_hours: "0 */3 * * *"
        every_4_hours: "0 */4 * * *"
        every_5_hours: "0 */5 * * *"
        every_6_hours: "0 */6 * * *"
        twice_a_day: "0 */12 * * *"
        daily_8am: "0 8 * * *"
        every_sunday: "0 0 * * 0"
Copy to Clipboard Toggle word wrap

您可以使用acm-dr-virt-schedule-cron ConfigMap 创建的任何计划来设置kubevirt.io.VirtualMachine的备份计划。例如,如果您想每天早上 8 点备份虚拟机,请将以下标签添加到虚拟机资源:

apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  name: vm-name
  labels:
    cluster.open-cluster-management.io/backup-vm: daily_8am
Copy to Clipboard Toggle word wrap

由于此acm-dr-virt-schedule-cron ConfigMap 由中心集群备份组件创建和管理,因此您无法更改任何现有的 cron 属性或删除它们。内容核对完成后,这些属性将被重新创建。你只能在现有属性的基础上添加新属性。例如,如果您想创建一个 cron 作业,使其每周六运行,请将以下标签添加到现有的acm-dr-virt-schedule-cron属性中: every_sunday: "0 0 * * SAT"

1.2.3.3. 定义acm-dr-virt-restore-config配置映射

使用acm-dr-virt-restore-config ConfigMap 定义acm-dr-virt-restore策略要实现的恢复操作。使用open-cluster-management-backup命名空间中的 hub cluster backup 组件创建 ConfigMap。

有关完整恢复操作的示例,请参见以下 YAML 示例:

kind: ConfigMap
apiVersion: v1
metadata:
 name: acm-dr-virt-restore-config
 namespace: open-cluster-management-backup
data:
 2a054d24-3235-4249-9c81-f58ebc6110c7_backupName: acm-rho-virt-schedule-every-10-hours-20250120230438 
1

 2a054d24-3235-4249-9c81-f58ebc6110c7_restoreName: restore-20250120230438 
2

 2a054d24-3235-4249-9c81-f58ebc6110c7_vmsUID: 2a054d24-3235-4249-9c81-f58ebc6110c7 
3

 2a054d24-3235-4249-9c81-f58ebc6110c7_namespaceMapping: backup-ns-1=restore-ns-1{{ backup-ns-2=restore-ns-2}} 
4
Copy to Clipboard Toggle word wrap
1
2a054d24-3235-4249-9c81-f58ebc6110c7是恢复操作完成的集群 ID。acm-rho-virt-schedule-every-10-hours-20250120230438是用于恢复操作示例的备份的名称。
2
restore-20250120230438是此次还原操作创建的还原资源的名称。
3
2a054d24-3235-4249-9c81-f58ebc6110c7是使用acm-rho-virt-schedule-every-10-hours-20250120230438备份进行备份的虚拟机的 UID,要将其恢复。
4
namespaceMapping是一个可选属性,用于在与初始资源不同的命名空间中恢复资源。映射中未包含的任何源命名空间都将恢复为同名命名空间。backup-ns-1=restore-ns-1 backup-ns-2=restore-ns-2是以空格分隔的命名空间映射列表。在本示例中,在backup-ns-1命名空间中创建的备份资源将在restore-ns-1命名空间中恢复。如果恢复集群上不存在restore-ns-1,则会创建它。同样,在backup-ns-2命名空间中创建的资源将在restore-ns-2命名空间中恢复。

1.2.4. 使用还原策略创建还原操作

在为恢复操作安装虚拟化策略时,请考虑以下场景:

  • 如果将acm-dr-virt-restore-config ConfigMap 中的clusterID_restoreName属性设置为空值,则由acm-dr-virt-restore策略在集群上创建的具有clusterID的恢复资源将被删除。
  • 如果将acm-dr-virt-restore-config ConfigMap 中的clusterID_restoreName属性设置为非空值,则acm-dr-virt-restore策略会创建一个 Velero Restore资源。Velero 恢复资源的名称与clusterID_restoreName值匹配。如果从恢复集群中删除具有此名称的恢复资源,则acm-dr-virt-restore策略会重新创建该资源,从而导致恢复操作再次运行。
  • 请考虑以下行动:

    • 如果您不想再次运行还原操作,请不要删除还原资源。
    • 当确认恢复操作即将启动时,移除acm-dr-virt-restore-config ConfigMap 中clusterID_restoreName参数的值。这样做可以防止在acm-dr-virt-restore策略被禁用并再次启用时,需要重新运行恢复操作。禁用acm-dr-virt-restore策略后,该策略在恢复集群上创建的所有资源都会被清理,并在再次启用该策略时重新创建。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat