×

您可以备份和恢复 OpenShift Virtualization 上的托管集群以修复故障。

备份 OpenShift Virtualization 上的托管集群

备份 OpenShift Virtualization 上的托管集群时,托管集群可以保持运行状态。备份包含托管控制平面组件和托管集群的 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 此字段选择要备份的对象中的命名空间。包括托管集群和托管控制平面的命名空间。在此示例中,clusters 是托管集群中的命名空间,clusters-hosted 是托管控制平面中的命名空间。默认情况下,HostedControlPlane 命名空间为 clusters-<hosted_cluster_name>
    2 用作托管集群节点的虚拟机的引导映像存储在大型 PVC 中。为了减少备份时间和存储空间,您可以通过添加此标签选择器来过滤备份中的这些 PVC。
    3 此字段和 datamover 字段启用将 CSI VolumeSnapshots 自动上传到远程云存储。
    4 此字段和 snapshotMoveData 字段启用将 CSI VolumeSnapshots 自动上传到远程云存储。
    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 时,备份过程被认为已完成。

恢复 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 existingResourcePolicy 设置为 update 可确保用备份内容覆盖任何现有对象。此操作可能会导致包含不可变字段的对象出现问题,这就是为什么您删除了 HostedCluster、节点池和 PVC。如果您不设置此策略,Velero 引擎将跳过对已存在对象的恢复。
  4. 通过输入以下命令将更改应用于 YAML 文件

    $ oc apply -f <restore_resource_file_name>.yaml

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

  5. 通过检查恢复状态字段和 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 时,恢复过程被认为已完成。

后续步骤
  • 一段时间后,KubeVirt 虚拟机将被创建并作为计算节点加入托管集群。确保托管集群工作负载按预期再次运行。