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


使用 OpenShift API for Data Protection (OADP)来备份和恢复虚拟机。备份虚拟机后,您可以在 hub 或受管集群中恢复它。

这些 Red Hat Advanced Cluster Management 策略支持以下备份和恢复存储选项:

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

它们不支持以下选项:

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

要配置策略,并为虚拟机启用备份调度或运行恢复操作,请完成以下部分:

1.2.1. 备份和恢复虚拟机

您可以通过完成以下步骤备份集群中运行的虚拟机,或在集群中恢复虚拟机:

  1. 通过将 MultiClusterHub 中的 cluster-backup 参数设置为 true,在 hub 集群上启用备份组件。
  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-restore-config ConfigMap 来恢复您的虚拟机,如 acm-dr-virt-restore-config 部分所述。

1.2.2. 在 hub 集群上安装的虚拟化策略

当您启用备份 Operator 时,一组 Red Hat Advanced Cluster Management 策略和 ConfigMap 都会在 hub 集群中安装。当您禁用策略或从集群中删除策略时,创建的所有资源都会被删除。要了解更多有关可用的策略类型的信息,请完成以下部分:

1.2.2.1. 安装策略

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

当您在 MultiClusterHub 资源中启用 cluster-backup 选项时,备份图表会安装 OADP。启用 cluster-backup-option 时,您可以在 hub 集群中创建 DataProtectionApplication

请参阅以下安装策略模板和描述:

  1. 安装策略模板
Expand

模板

描述

check-config-file

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

check-oadp-channel

验证集群中是否安装了 OADP 版本,并且与策略安装的版本匹配。

check-dpa-config

验证 DataProtectionApplication 资源是否存在,且具有预期的配置,其状态是否为 Reconciled。验证 BackupStorageLocation 是否存在,且处于 Available 状态阶段。

install-oadp-copy-config

如果没有找到此命名空间,创建安装 OADP 的命名空间。复制 OADP secret 并安装 OADP,但只适用于受管集群。创建由 acm-virt-config 标签定义的 DataProtectionApplication 资源,但只适用于受管集群。用户必须在 hub 集群中手动创建 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 名称由 schedule_hub_config_name 属性定义,并在 open-cluster-management-backup 命名空间中可用

check-backup-status-completed

如果调度没有暂停,它将验证状态为 Enabled。找到此计划生成的最新备份,并验证其状态是否为 Completed。如果为此备份创建了任何 DataUpload,其状态为 Completed。如果这些条件不是 True,则显示违反情况。

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 中的信息在集群中创建 Velero 恢复资源,这些资源由 acm-dr-virt-config ConfigMap 中的 restore_hub_config_name 属性标识。

请参阅以下恢复策略模板和描述:

  1. 恢复策略模板
Expand

模板

描述

check-velero-restore-status

使用 clusterID_restoreName 属性定义的名称验证恢复资源是否存在,状态为 Completed

create-velero-restore

如果 clusterID_restoreName 属性值不为空,并且 clusterID 与这个集群 UID 匹配,它会使用与 restore_hub_config_name 标识的 ConfigMap 定义的属性创建 Velero 恢复资源。只有在 acm-dr-virt-install 策略兼容时才会创建 Velero 恢复资源。

1.2.3. 使用 ConfigMap定义策略

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

1.2.3.1. 定义 acm-dr-virt-config ConfigMap

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

要将虚拟化策略放在受管集群或 hub 集群中,请完成以下步骤:

  1. 使用 acm-dr-virt-config 或使用 acm-dr-virt-config ConfigMap 作为示例,在 open-cluster-management-backup 命名空间中的 hub 集群上创建一个新的 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 Container Platform 集群的版本。使用此属性覆盖默认值。

字符串

None

channelName

OADP 频道名称。为自定义安装设置此属性,例如: 离线安装

字符串

redhat-oadp-operator

subscriptionSource

OADP 订阅.为自定义安装设置此属性,例如: 离线安装

字符串

redhat-operators

subscriptionSourceNamespace

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

字符串

openshift-marketplace

subscriptionStartingCSV

OADP 订阅 startCSV.

字符串

None

subscriptionInstallPlanApproval

OADP 安装计划。

字符串

自动

backupNS

在受管集群中安装 OADP 的命名空间。

字符串

None

credentials_hub_secret_name

在受管集群中使用的 OADP secret 的名称。具有此名称的 Secret 必须存在于 open-cluster-management-backup 命名空间中的 hub 集群中。安装策略将此 secret 移到指定的 backupNS 命名空间中的 hub 集群。

字符串

None

credentials_name

设置 Velero 凭证名称时,在受管集群中 OADP DataProtectionApplication 资源使用的 secret 名称。

JSON

None

dpa_name

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

字符串

None

dpa_spec

在受管集群中创建时定义 DataProtectionApplication spec 的有效 JSON。

JSON

None

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

Name

描述

类型

默认值

选填

scheduleTTL

备份过期时间。

字符串

24h0m0s

schedule_paused

设置为 True 以暂停虚拟化备份调度。

字符串

False

schedule_hub_config_name

用于定义有效 cron 任务调度的 ConfigMap 名称。具有此名称的 ConfigMap 必须存在于 open-cluster-management-backup 命名空间中的 hub 集群中。

字符串

None

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

Name

描述

类型

默认值

选填

restore_hub_config_name

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

字符串

None

1.2.3.2. 定义 acm-dr-virt-schedule-cron ConfigMap

使用 acm-dr-virt-schedule-cron ConfigMap 定义在调度虚拟机备份时要使用的有效的 cron 作业调度。acm-dr-virt-schedule-cron ConfigMap 由 open-cluster-management-backup 命名空间中的 hub 集群备份组件创建,包括以下 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 由 hub 集群备份组件创建和管理,所以您无法更改任何现有的 cron 属性或删除它们。当内容被协调时,会重新创建这些属性。您只能在现有属性中添加新属性。例如,如果要创建一个 cron 作业来每 Saturday 运行,请在现有的 acm-dr-virt-schedule-cron 属性中添加以下标签: every_sunday: "0 0 * SAT"

1.2.3.3. 定义 acm-dr-virt-restore-config ConfigMap

使用 acm-dr-virt-restore-config ConfigMap 定义由 acm-dr-virt-restore 策略实施的恢复操作。使用 open-cluster-management-backup 命名空间中的 hub 集群备份组件来创建 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-20250120230438Restore 资源的名称,因这个恢复操作而创建。
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 属性设置为空值,则由带有 clusterID 的集群中的 acm-dr-virt-restore 策略创建的恢复资源会被删除。
  • 如果将 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