9.5. OpenShift Virtualization 上のホステッドクラスターのバックアップと復元
障害に対処するために、OpenShift Virtualization 上のホステッドクラスターをバックアップおよび復元できます。
9.5.1. OpenShift Virtualization 上のホステッドクラスターのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Virtualization 上のホステッドクラスターをバックアップしても、ホステッドクラスターは動作を継続できます。バックアップには、Hosted 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: true3 datamover: "velero"4 defaultVolumesToFsBackup: false5 - 1
- このフィールドでは、バックアップするオブジェクトの namespace を選択します。ホステッドクラスターと Hosted Control Plane の両方の namespace を含めます。この例では、
clustersはホステッドクラスターの namespace であり、clusters-hostedは Hosted Control Plane の namespace です。デフォルトでは、HostedControlPlaneの namespace はclusters-<hosted_cluster_name>です。 - 2
- ホステッドクラスターノードとして使用される仮想マシンのブートイメージは、大規模な PVC に保存されています。バックアップ時間とストレージサイズを削減するには、このラベルセレクターを追加して、この PVC をバックアップから除外できます。
- 3
- このフィールドと
datamoverフィールドにより、CSIVolumeSnapshotsをリモートクラウドストレージに自動的にアップロードできます。 - 4
- このフィールドと
snapshotMoveDataフィールドにより、CSIVolumeSnapshotsをリモートクラウドストレージに自動的にアップロードできます。 - 5
- このフィールドは、Pod ボリュームファイルシステムバックアップをデフォルトですべてのボリュームに使用するかどうかを指定します。特定の PVC をバックアップするには、この値を
falseに設定します。
次のコマンドを入力して、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の場合、バックアッププロセスは完了したと見なすことができます。
9.5.2. OpenShift Virtualization 上のホステッドクラスターの復元 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Virtualization 上のホステッドクラスターをバックアップした後、そのバックアップを復元できます。
復元プロセスは、バックアップを作成したのと同じ管理クラスター上でのみ完了できます。
手順
-
HostedControlPlanenamespace で Pod または永続ボリューム要求 (PVC) が実行されていないことを確認します。 管理クラスターから次のオブジェクトを削除します。
-
HostedCluster -
NodePool - PVC
-
次の例のような復元マニフェスト YAML ファイルを作成します。
apiVersion: velero.io/v1 kind: Restore metadata: name: hc-clusters-hosted-restore namespace: openshift-adp spec: backupName: hc-clusters-hosted-backup restorePVs: true1 existingResourcePolicy: update2 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>は、ファイル名に置き換えます。復元ステータスフィールドと 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 仮想マシンが作成され、ホステッドクラスターにコンピュートノードとして参加します。ホステッドクラスターのワークロードが期待どおりに再度実行されていることを確認してください。