15.3. 仮想マシンのバックアップ
OpenShift Virtualization の OADP は、テクノロジープレビュー機能としてのみご利用いただけます。テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではない場合があります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
OpenShift API for Data Protection (OADP) の Backup
カスタムリソース (CR) を作成して、仮想マシン (VM) をバックアップします。
Backup
CR は以下のアクションを実行します。
- Multicloud Object Gateway、Noobaa、または Minio などの S3 互換オブジェクトストレージにアーカイブファイルを作成して、OpenShift Virtualization リソースをバックアップします。
以下のオプションのいずれかを使用して、仮想マシンディスクをバックアップします。
- Ceph RBD または Ceph FS などの CSI 対応クラウドストレージ上の Container Storage Interface (CSI) スナップショット。
- ファイルシステムバックアップを使用してアプリケーションをバックアップします。オブジェクトストレージ上の Kopia または Restic。
OADP はバックアップフックを提供し、バックアップ操作の前に仮想マシンのファイルシステムをフリーズし、バックアップの完了時にフリーズを解除します。
kubevirt-controller
は、バックアップ操作の前後に Velero が virt-freezer
バイナリーを実行できるようにするアノテーションで virt-launcher
Pod を作成します。
freeze
および unfreeze
API は、仮想マシンスナップショット API のサブリソースです。詳細は、仮想マシンのスナップショットについてを参照してください。
フックを Backup
CR に追加して、バックアップ操作の前後に特定の仮想マシンでコマンドを実行できます。
Backup
CR の代わりに Schedule
CR を作成することにより、バックアップをスケジュールします。
15.3.1. Backup CR の作成
Kubernetes リソース、内部イメージ、および永続ボリューム(PV)をバックアップするには、Backup カスタムリソース(CR)を作成します。
前提条件
- OpenShift API for Data Protection (OADP) Operator をインストールしている。
-
DataProtectionApplication
CR がReady
状態である。 バックアップロケーションの前提条件:
- Velero 用に S3 オブジェクトストレージを設定する必要があります。
-
DataProtectionApplication
CR でバックアップの場所を設定する必要があります。
スナップショットの場所の前提条件:
- クラウドプロバイダーには、ネイティブスナップショット API が必要であるか、Container Storage Interface (CSI) スナップショットをサポートしている必要があります。
-
CSI スナップショットの場合、CSI ドライバーを登録するために
VolumeSnapshotClass
CR を作成する必要があります。 -
DataProtectionApplication
CR でボリュームの場所を設定する必要があります。
手順
次のコマンドを入力して、
backupStorageLocations
CR を取得します。$ oc get backupStorageLocations -n openshift-adp
出力例
NAMESPACE NAME PHASE LAST VALIDATED AGE DEFAULT openshift-adp velero-sample-1 Available 11s 31m
次の例のように、
Backup
CR を作成します。apiVersion: velero.io/v1 kind: Backup metadata: name: <backup> labels: velero.io/storage-location: default namespace: openshift-adp spec: hooks: {} includedNamespaces: - <namespace> 1 includedResources: [] 2 excludedResources: [] 3 storageLocation: <velero-sample-1> 4 ttl: 720h0m0s labelSelector: 5 matchLabels: app=<label_1> app=<label_2> app=<label_3> orLabelSelectors: 6 - matchLabels: app=<label_1> app=<label_2> app=<label_3>
- 1
- バックアップする namespace の配列を指定します。
- 2
- オプション: バックアップに含めるリソースの配列を指定します。リソースは、省略語 ('pods' は 'po' など) または完全修飾の場合があります。指定しない場合、すべてのリソースが含まれます。
- 3
- オプション: バックアップから除外するリソースの配列を指定します。リソースは、省略語 ('pods' は 'po' など) または完全修飾の場合があります。
- 4
backupStorageLocations
CR の名前を指定します。- 5
- 指定したラベルを すべて 持つバックアップリソースの {key,value} ペアのマップ。
- 6
- 指定したラベルを 1 つ以上 持つバックアップリソースの {key,value} ペアのマップ。
Backup
CR のステータスがCompleted
したことを確認します。$ oc get backup -n openshift-adp <backup> -o jsonpath='{.status.phase}'
15.3.1.1. CSI スナップショットを使用した永続ボリュームのバックアップ
Backup
CR を作成する前に、クラウドストレージの VolumeSnapshotClass
カスタムリソース (CR) を編集して、Container Storage Interface (CSI) スナップショットを使用して永続ボリュームをバックアップします。
前提条件
- クラウドプロバイダーは、CSI スナップショットをサポートする必要があります。
-
DataProtectionApplication
CR で CSI を有効にする必要があります。
手順
metadata.labels.velero.io/csi-volumesnapshot-class: "true"
のキー: 値ペアをVolumeSnapshotClass
CR に追加します。apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: <volume_snapshot_class_name> labels: velero.io/csi-volumesnapshot-class: "true" driver: <csi_driver> deletionPolicy: Retain
これで、Backup
CR を作成できます。
15.3.1.2. Restic を使用したアプリケーションのバックアップ
Backup
カスタムリソース (CR) を編集して、Restic を使用して Kubernetes リソース、内部イメージ、および永続ボリュームをバックアップします。
DataProtectionApplication
CR でスナップショットの場所を指定する必要はありません。
Restic は、hostPath
ボリュームのバックアップをサポートしません。詳細は、追加の Restic 制限事項 を参照してください。
前提条件
- OpenShift API for Data Protection (OADP) Operator をインストールしている。
-
DataProtectionApplication
CR でspec.configuration.restic.enable
をfalse
に設定して、デフォルトの Restic インストールを無効にしていない。 -
DataProtectionApplication
CR がReady
状態である。
手順
次の例のように、
Backup
CR を編集します。apiVersion: velero.io/v1 kind: Backup metadata: name: <backup> labels: velero.io/storage-location: default namespace: openshift-adp spec: defaultVolumesToFsBackup: true 1 ...
- 1
- OADP バージョン 1.2 以降では、
defaultVolumesToFsBackup: true
設定をspec
ブロック内に追加します。OADP バージョン 1.1 では、defaultVolumesToRestic: true
を追加します。
15.3.1.3. バックアップフックの作成
Backup
カスタムリソース (CR) を編集して、Pod 内のコンテナーでコマンドを実行するためのバックアップフックを作成します。
プレ フックは、Pod のバックアップが作成される前に実行します。ポスト フックはバックアップ後に実行します。
手順
次の例のように、
Backup
CR のspec.hooks
ブロックにフックを追加します。apiVersion: velero.io/v1 kind: Backup metadata: name: <backup> namespace: openshift-adp spec: hooks: resources: - name: <hook_name> includedNamespaces: - <namespace> 1 excludedNamespaces: 2 - <namespace> includedResources: [] - pods 3 excludedResources: [] 4 labelSelector: 5 matchLabels: app: velero component: server pre: 6 - exec: container: <container> 7 command: - /bin/uname 8 - -a onError: Fail 9 timeout: 30s 10 post: 11 ...
- 1
- オプション: フックが適用される namespace を指定できます。この値が指定されていない場合、フックはすべてのネームスペースに適用されます。
- 2
- オプション: フックが適用されない namespace を指定できます。
- 3
- 現在、Pod は、フックを適用できる唯一のサポート対象リソースです。
- 4
- オプション: フックが適用されないリソースを指定できます。
- 5
- オプション: このフックは、ラベルに一致するオブジェクトにのみ適用されます。この値が指定されていない場合、フックはすべてのネームスペースに適用されます。
- 6
- バックアップの前に実行するフックの配列。
- 7
- オプション: コンテナーが指定されていない場合、コマンドは Pod の最初のコンテナーで実行されます。
- 8
- これは、追加される init コンテナーのエントリーポイントです。
- 9
- エラー処理に許可される値は、
Fail
とContinue
です。デフォルトはFail
です。 - 10
- オプション: コマンドの実行を待機する時間。デフォルトは
30s
です。 - 11
- このブロックでは、バックアップ後に実行するフックの配列を、バックアップ前のフックと同じパラメーターで定義します。