8.5. 在 OpenShift Virtualization 上备份和恢复托管集群
您可以在 OpenShift Virtualization 上备份和恢复托管集群,以修复失败。
8.5.1. 在 OpenShift Virtualization 上备份托管集群
当您备份 OpenShift Virtualization 上的托管集群时,托管集群可以保持运行。备份包含托管的 control plane 组件和托管集群的 etcd。
当托管集群没有在外部基础架构上运行计算节点时,还备份存储在 KubeVirt CSI 置备的持久性卷声明(PVC)中的计算节点。备份不包含用作计算节点的任何 KubeVirt 虚拟机(VM)。这些虚拟机会在恢复过程完成后自动创建。
流程
通过创建一个类似以下示例的 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
字段启用自动上传 CSIVolumeSnapshot
到远程云存储。 - 4
- 此字段和
snapshotMoveData
字段启用自动将 CSIVolumeSnapshot
上传到远程云存储。 - 5
- 此字段指示 pod 卷文件系统备份默认用于所有卷。将此值设置为
false
以备份您想要的 PVC。
输入以下命令将更改应用到 YAML 文件:
$ oc apply -f <backup_file_name>.yaml
将
<backup_file_name
> 替换为您的文件的名称。监控备份对象状态和 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 上备份托管集群后,您可以恢复备份。
恢复过程只能在创建备份的同一管理集群中完成。
流程
-
确保
HostedControlPlane
命名空间中没有运行 pod 或持久性卷声明(PVC)。 从管理集群中删除以下对象:
-
HostedCluster
-
NodePool
- PVCs
-
创建类似以下示例的恢复清单 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
输入以下命令将更改应用到 YAML 文件:
$ oc apply -f <restore_resource_file_name>.yaml
将
<restore_resource_file_name
> 替换为您的文件的名称。通过检查 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 虚拟机,并将托管集群作为计算节点加入。确保托管集群工作负载如预期再次运行。