1.3. 备份和恢复 Operator 架构
Operator 定义 BackupSchedule.cluster.open-cluster-management.io 资源,用于设置 Red Hat Advanced Cluster Management 备份计划,以及 restore.cluster.open-cluster-management.io 资源,该资源用于处理和恢复这些备份。Operator 会创建对应的 Velero 资源,并定义备份远程集群和需要恢复的任何其他 hub 集群资源所需的选项。查看以下示意图:
1.3.1. 备份的资源 复制链接链接已复制到粘贴板!
集群备份和恢复 Operator 解决方案为所有 hub 集群资源(如受管集群、应用程序和策略)提供备份和恢复支持。您可以使用解决方案备份任何扩展基本 hub 集群安装的第三方资源。使用这个备份解决方案,您可以定义一个基于 cron 的备份调度,该调度在指定时间段内运行,并持续备份 hub 集群内容的最新版本。
当 hub 集群需要替换或处于灾难情况下,当 hub 集群停机时,可以部署新的 hub 集群并备份数据被移到新的 hub 集群中。
查看以下用于识别备份数据的集群备份和恢复过程的排序列表:
-
排除
MultiClusterHub命名空间中的所有资源。这是为了避免备份链接到当前 hub 集群身份的安装资源,不应该备份。 -
使用
.open-cluster-management.io后缀的 API 版本备份所有 CRD。这个后缀表示所有 Red Hat Advanced Cluster Management 资源都已备份。 -
从以下 API 组备份所有 CRD:
argoproj.io,app.k8s.io,core.observatorium.io,hive.openshift.io。 -
排除以下 API 组中的所有 CRD:
admission.cluster.open-cluster-management.io,admission.work.open-cluster-management.io,internal.open-cluster-management.io,operator.open-cluster-management.io,work.open-cluster-management.io,search.open-cluster-management.io,admission.hive.openshift.io,velero.io。 -
排除以下 CRD,它们是包含的 API 组的一部分,但并不需要或被所有者资源(也会被备份)所替代:
clustermanagementaddon,observabilityaddon,applicationmanager,certpolicycontroller,iampolicycontroller,policycontroller,searchcollector,workmanager,backupschedule,restore,clusterclaim.cluster.open-cluster-management.io。 -
使用以下标签之一备份 secret 和 ConfigMap:
cluster.open-cluster-management.io/type,hive.openshift.io/secret-type,cluster.open-cluster-management.io/backup。 对于您要备份的任何其他资源,使用
cluster.open-cluster-management.io/backup标签,且不包含在前面提到的条件中。请参见以下示例:apiVersion: my.group/v1alpha1 kind: MyResource metadata: labels: cluster.open-cluster-management.io/backup: ""apiVersion: my.group/v1alpha1 kind: MyResource metadata: labels: cluster.open-cluster-management.io/backup: ""Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注:需要备份
hive.openshift.io.ClusterDeployment资源使用的 secret,并仅在使用控制台创建集群时使用cluster.open-cluster-management.io/backup标签自动标注。如果使用 GitOps 部署 Hive 集群,则必须手动将cluster.open-cluster-management.io/backup标签添加到ClusterDeployment使用的 secret 中。排除您不想备份的特定资源。例如,请查看以下从备份过程中排除 Velero 资源的示例:
apiVersion: my.group/v1alpha1 kind: MyResource metadata: labels: velero.io/exclude-from-backup: "true"apiVersion: my.group/v1alpha1 kind: MyResource metadata: labels: velero.io/exclude-from-backup: "true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.2. 在受管集群激活时恢复的资源 复制链接链接已复制到粘贴板!
当您将 cluster.open-cluster-management.io/backup 标签添加到资源时,资源会在 acm-resources-generic-schedule 备份中自动备份。如果需要恢复任何资源,则必须将标签值设置为 cluster-activation,仅在受管集群移到新的 hub 集群后,并在恢复的资源中使用 veleroManagedClustersBackupName:latest。这样可确保资源不会被恢复,除非受管集群激活被调用。查看以下示例:
apiVersion: my.group/v1alpha1
kind: MyResource
metadata:
labels:
cluster.open-cluster-management.io/backup: cluster-activation
apiVersion: my.group/v1alpha1
kind: MyResource
metadata:
labels:
cluster.open-cluster-management.io/backup: cluster-activation
除了使用 cluster.open-cluster-management.io/backup: cluster-activation 标签并由 acm-resources-generic-schedule 备份存储的激活数据资源外,集群备份和恢复 Operator 还默认在激活集合中包括一些资源。以下资源由 acm-managed-clusters-schedule 备份备份:
-
managedcluster.cluster.open-cluster-management.io -
managedcluster.clusterview.open-cluster-management.io -
klusterletaddonconfig.agent.open-cluster-management.io -
managedclusteraddon.addon.open-cluster-management.io -
managedclusterset.cluster.open-cluster-management.io -
managedclusterset.clusterview.open-cluster-management.io -
managedclustersetbinding.cluster.open-cluster-management.io -
clusterpool.hive.openshift.io -
clusterclaim.hive.openshift.io -
clustercurator.cluster.open-cluster-management.io
1.3.3. 资源请求和限值自定义 复制链接链接已复制到粘贴板!
最初安装 Velero 时,Velero pod 会被设置为默认 CPU 和内存限值,如下例所示:
以上示例中的限制在某些情况下可以正常工作,但可能会在集群备份大量资源时进行更新。例如,当备份在管理 2000 集群的 hub 集群上运行时,Velero pod 会因为内存不足错误(OOM)崩溃。对于这种情况,以下配置允许备份完成:
要更新 Velero pod 资源的限制和请求,您需要更新 DataProtectionApplication 资源,并为 Velero pod 插入 resourceAllocation 模板。查看以下示例:
-
请参阅 Red Hat OpenShift Container Platform 文档中的 默认 Velero 云供应商插件 部分,以了解更多有关
DataProtectionApplication参数的信息。 - 如需有关备份和恢复 CPU 和内存要求的更多详情,请参阅 OpenShift Container Platform 文档中的配置主题的 CPU 和内存要求。