8.5. 在 OpenShift Virtualization 上备份和恢复托管集群


您可以在 OpenShift Virtualization 上备份和恢复托管集群,以修复失败。

8.5.1. 在 OpenShift Virtualization 上备份托管集群

当您备份 OpenShift Virtualization 上的托管集群时,托管集群可以保持运行。备份包含托管的 control plane 组件和托管集群的 etcd。

当托管集群没有在外部基础架构上运行计算节点时,还备份存储在 KubeVirt CSI 置备的持久性卷声明(PVC)中的计算节点。备份不包含用作计算节点的任何 KubeVirt 虚拟机(VM)。这些虚拟机会在恢复过程完成后自动创建。

流程

  1. 通过创建一个类似以下示例的 YAML 文件来创建 Velero 备份资源:

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: hc-clusters-hosted-backup
      namespace: openshift-adp
      labels:
        velero.io/storage-location: default
    spec:
      includedNamespaces: 1
      - clusters
      - clusters-hosted
      includedResources:
      - sa
      - role
      - rolebinding
      - deployment
      - statefulset
      - pv
      - pvc
      - bmh
      - configmap
      - infraenv
      - priorityclasses
      - pdb
      - hostedcluster
      - nodepool
      - secrets
      - hostedcontrolplane
      - cluster
      - datavolume
      - service
      - route
      excludedResources: [ ]
      labelSelector: 2
        matchExpressions:
        - key: 'hypershift.openshift.io/is-kubevirt-rhcos'
          operator: 'DoesNotExist'
      storageLocation: default
      preserveNodePorts: true
      ttl: 4h0m0s
      snapshotMoveData: true 3
      datamover: "velero" 4
      defaultVolumesToFsBackup: false 5
    1
    此字段从对象中选择要备份的命名空间。包括来自托管集群和托管的 control plane 的命名空间。在本例中,集群 是来自托管集群的命名空间,集群托管的是托管的 control plane 的命名空间。默认情况下,HostedControlPlane 命名空间是 clusters-<hosted_cluster_name>
    2
    用作托管集群节点的虚拟机的引导镜像存储在大型 PVC 中。要减少备份时间和存储大小,您可以通过添加此标签选择器来过滤这些 PVC。
    3
    此字段和 datamover 字段启用自动上传 CSI VolumeSnapshot 到远程云存储。
    4
    此字段和 snapshotMoveData 字段启用自动将 CSI VolumeSnapshot 上传到远程云存储。
    5
    此字段指示 pod 卷文件系统备份默认用于所有卷。将此值设置为 false 以备份您想要的 PVC。
  2. 输入以下命令将更改应用到 YAML 文件:

    $ oc apply -f <backup_file_name>.yaml

    <backup_file_name > 替换为您的文件的名称。

  3. 监控备份对象状态和 Velero 日志中的备份过程。

    • 要监控备份对象状态,请输入以下命令:

      $ watch "oc get backups.velero.io -n openshift-adp <backup_file_name> -o jsonpath='{.status}' | jq"
    • 要监控 Velero 日志,请输入以下命令:

      $ oc logs -n openshift-adp -ldeploy=velero -f

验证

  • status.phase 字段为 Completed 时,备份过程被视为 complete。

8.5.2. 在 OpenShift Virtualization 上恢复托管集群

在 OpenShift Virtualization 上备份托管集群后,您可以恢复备份。

注意

恢复过程只能在创建备份的同一管理集群中完成。

流程

  1. 确保 HostedControlPlane 命名空间中没有运行 pod 或持久性卷声明(PVC)。
  2. 从管理集群中删除以下对象:

    • HostedCluster
    • NodePool
    • PVCs
  3. 创建类似以下示例的恢复清单 YAML 文件:

    apiVersion: velero.io/v1
    kind: Restore
    metadata:
      name: hc-clusters-hosted-restore
      namespace: openshift-adp
    spec:
      backupName: hc-clusters-hosted-backup
      restorePVs: true 1
      existingResourcePolicy: update 2
      excludedResources:
      - nodes
      - events
      - events.events.k8s.io
      - backups.velero.io
      - restores.velero.io
      - resticrepositories.velero.io
    1
    此字段开始使用包含的持久性卷的 pod 恢复。
    2
    将现有的ResourcePolicy 设置为 update 可确保任何现有对象都会被备份内容覆盖。此操作可能会导致包含不可变字段的对象出现问题,这是为什么删除 HostedCluster、节点池和 PVC。如果没有设置此策略,Velero 引擎会跳过恢复已存在的对象。
  4. 输入以下命令将更改应用到 YAML 文件:

    $ oc apply -f <restore_resource_file_name>.yaml

    <restore_resource_file_name > 替换为您的文件的名称。

  5. 通过检查 restore status 字段和 Velero 日志来监控恢复过程。

    • 要检查恢复状态字段,请输入以下命令:

      $ watch "oc get restores.velero.io -n openshift-adp <backup_file_name> -o jsonpath='{.status}' | jq"
    • 要检查 Velero 日志,请输入以下命令:

      $ oc logs -n openshift-adp -ldeploy=velero -f

验证

  • status.phase 字段为 Completed 时,恢复过程被视为 complete。

后续步骤

  • 一段时间后,会创建 KubeVirt 虚拟机,并将托管集群作为计算节点加入。确保托管集群工作负载如预期再次运行。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.