8.5. OpenShift Virtualization 上のホステッドクラスターのバックアップと復元
障害に対処するために、OpenShift Virtualization 上のホステッドクラスターをバックアップおよび復元できます。
8.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: true 3 datamover: "velero" 4 defaultVolumesToFsBackup: false 5
- 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
の場合、バックアッププロセスは完了したと見なすことができます。
8.5.2. OpenShift Virtualization 上のホステッドクラスターの復元
OpenShift Virtualization 上のホステッドクラスターをバックアップした後、そのバックアップを復元できます。
復元プロセスは、バックアップを作成したのと同じ管理クラスター上でのみ完了できます。
手順
-
HostedControlPlane
namespace で 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: 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>
は、ファイル名に置き換えます。復元ステータスフィールドと 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 仮想マシンが作成され、ホステッドクラスターにコンピュートノードとして参加します。ホステッドクラスターのワークロードが期待どおりに再度実行されていることを確認してください。