5.13. OpenShift Virtualization を使用した OADP の設定
5.13.1. OpenShift Virtualization を使用した OpenShift API for Data Protection の設定 リンクのコピーリンクがクリップボードにコピーされました!
OADP Operator をインストールし、バックアップの場所を設定することで、OpenShift Virtualization を使用した OpenShift API for Data Protection (OADP) をインストールできます。その後、Data Protection Application をインストールできます。
OpenShift API for Data Protection を使用して仮想マシンをバックアップおよび復元します。
OpenShift Virtualization を使用した OpenShift API for Data Protection は、バックアップおよび復元のストレージオプションとして次のものをサポートしています。
- Container Storage Interface (CSI) バックアップ
- DataMover による Container Storage Interface (CSI) バックアップ
次のストレージオプションは対象外です。
- ファイルシステムのバックアップと復元
- ボリュームスナップショットのバックアップと復元
詳細は、File System Backup を使用してアプリケーションをバックアップする: Kopia または Restic を参照してください。
制限されたネットワーク環境に OADP Operator をインストールするには、最初にデフォルトの OperatorHub ソースを無効にして、Operator カタログをミラーリングする必要があります。詳細は、非接続環境での Operator Lifecycle Manager の使用 を参照してください。
5.13.1.1. OpenShift Virtualization を使用した OADP のインストールと設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、OADP Operator をインストールして OADP をインストールします。
最新バージョンの OADP Operator は、Velero 1.16 をインストールします。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
- ストレージプロバイダーの指示に従って、OADP Operator をインストールします。
-
kubevirt
およびopenshift
OADP プラグインを使用して Data Protection Application (DPA) をインストールします。 Backup
カスタムリソース (CR) を作成して、仮想マシンをバックアップします。警告Red Hat のサポート対象は、次のオプションに限られています。
- CSI バックアップ
- DataMover による CSI バックアップ
Restore
CR を作成して Backup
CR を復元します。
5.13.1.2. Data Protection Application のインストール リンクのコピーリンクがクリップボードにコピーされました!
DataProtectionApplication
API のインスタンスを作成して、Data Protection Application (DPA) をインストールします。
前提条件
- OADP Operator をインストールする。
- オブジェクトストレージをバックアップロケーションとして設定する必要がある。
- スナップショットを使用して PV をバックアップする場合、クラウドプロバイダーはネイティブスナップショット API または Container Storage Interface (CSI) スナップショットのいずれかをサポートする必要がある。
バックアップとスナップショットの場所で同じ認証情報を使用する場合は、デフォルトの名前である
cloud-credentials
を使用してSecret
を作成する必要がある。注記インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の
credentials-velero
ファイルを使用してデフォルトのSecret
を作成できます。デフォルトのSecret
がない場合、インストールは失敗します。
手順
-
Operators
Installed Operators をクリックして、OADP Operator を選択します。 - Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
YAML View をクリックして、
DataProtectionApplication
マニフェストのパラメーターを更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- OADP のデフォルトの namespace は
openshift-adp
です。namespace は変数であり、設定可能です。 - 2
kubevirt
プラグインは OpenShift Virtualization に必須です。- 3
- バックアッププロバイダーのプラグインがある場合には、それを指定します (例:
gcp
)。 - 4
- CSI スナップショットを使用して PV をバックアップするには、
csi
プラグインが必須です。csi
プラグインは、Velero CSI ベータスナップショット API を使用します。スナップショットの場所を設定する必要はありません。 - 5
openshift
プラグインは必須です。- 6
- Velero CRD の可用性、volumeSnapshot の削除、バックアップリポジトリーの可用性など、タイムアウトが発生するまでに複数の Velero リソースを待機する時間を分単位で指定します。デフォルトは 10m です。
- 7
- 管理要求をサーバーにルーティングする管理エージェント。
- 8
nodeAgent
を有効にして File System Backup を実行する場合は、この値をtrue
に設定します。- 9
- 組み込み DataMover を使用するには、アップローダーとして
kopia
と入力します。nodeAgent
はデーモンセットをデプロイします。これは、nodeAgent
Pod が各ワーキングノード上で実行されることを意味します。File System Backup を設定するには、spec.defaultVolumesToFsBackup: true
をBackup
CR に追加します。 - 10
- Kopia が利用可能なノードを指定します。デフォルトでは、Kopia はすべてのノードで実行されます。
- 11
- バックアッププロバイダーを指定します。
- 12
- バックアッププロバイダーにデフォルトのプラグインを使用する場合は、
Secret
の正しいデフォルト名を指定します (例:cloud-credentials-gcp
)。カスタム名を指定すると、そのカスタム名がバックアップの場所に使用されます。Secret
名を指定しない場合は、デフォルトの名前が使用されます。 - 13
- Backup Storage Location としてバケットを指定します。バケットが Velero バックアップ専用のバケットでない場合は、接頭辞を指定する必要があります。
- 14
- バケットが複数の目的で使用される場合は、Velero バックアップの接頭辞を指定します (例:
velero
)。
- Create をクリックします。
検証
次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。
oc get all -n openshift-adp
$ oc get all -n openshift-adp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
DataProtectionApplication
(DPA) が調整されていることを確認します。oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
type
がReconciled
に設定されていることを確認します。 次のコマンドを実行して、Backup Storage Location を確認し、
PHASE
がAvailable
であることを確認します。oc get backupstoragelocations.velero.io -n openshift-adp
$ oc get backupstoragelocations.velero.io -n openshift-adp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Microsoft Windows 仮想マシン (VM) の再起動直後に仮想マシンのバックアップを実行すると、PartiallyFailed
エラーが発生してバックアップが失敗する可能性があります。これは、仮想マシンの起動直後は、Microsoft Windows Volume Shadow Copy Service (VSS) と Guest Agent (GA) サービスが準備されていないためです。VSS および GA サービスが準備されていないため、バックアップは失敗します。このような場合は、仮想マシンの起動後数分後にバックアップを再試行してください。
5.13.1.3. 単一仮想マシンのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
複数の仮想マシンが含まれる namespace があり、そのうちの 1 つだけをバックアップする場合は、ラベルセレクターを使用して、バックアップに含める必要がある仮想マシンをフィルターできます。app: vmname
ラベルを使用して仮想マシンをフィルタリングできます。
前提条件
- OADP Operator がインストールされている。
- namespace 内で複数の仮想マシンが実行されている。
-
DataProtectionApplication
(DPA) カスタムリソース (CR) にkubevirt
プラグインを追加した。 -
DataProtectionApplication
CR でBackupStorageLocation
CR を設定しており、BackupStorageLocation
が使用可能である。
手順
次の例に示すように、
Backup
CR を設定します。Backup
CR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow Backup
CR を作成するには、次のコマンドを実行します。oc apply -f <backup_cr_file_name>
$ oc apply -f <backup_cr_file_name>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
Backup
CR ファイルの名前を指定します。
5.13.1.4. 1 つの仮想マシンの復元 リンクのコピーリンクがクリップボードにコピーされました!
Backup
カスタムリソース (CR) のラベルセレクターを使用して 1 つの仮想マシンをバックアップした後、Restore
CR を作成してバックアップを指すように設定できます。この復元操作では、1 つの仮想マシンが復元されます。
前提条件
- OADP Operator がインストールされている。
- ラベルセレクターを使用して 1 つの仮想マシンをバックアップした。
手順
次の例に示すように、
Restore
CR を設定します。Restore
CR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 1 つの仮想マシンのバックアップ名を指定します。
1 つの仮想マシンを復元するには、次のコマンドを実行します。
oc apply -f <restore_cr_file_name>
$ oc apply -f <restore_cr_file_name>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
Restore
CR ファイルの名前を指定します。
注記仮想マシンのバックアップを復元すると、復元に割り当てられた Ceph Storage 容量が予想よりも高いことに気付く場合があります。この動作は、
kubevirt
の復元中、および仮想マシンのボリュームタイプがblock
の場合にのみ発生します。rbd sparsify
ツールを使用して、ターゲットボリューム上のスペースを再利用します。詳細は、ターゲットボリューム上のスペースの再利用 を参照してください。
5.13.1.5. 複数の仮想マシンのバックアップから 1 つの仮想マシンを復元する リンクのコピーリンクがクリップボードにコピーされました!
複数の仮想マシン (仮想マシン) が含まれるバックアップがあり、そのうち 1 つの仮想マシンのみを復元する場合は、Restore
CR の LabelSelectors
セクションを使用して、復元する仮想マシンを選択できます。確実に仮想マシンにアタッチされた永続ボリューム要求 (PVC) が正しく復元され、復元された仮想マシンが Provisioning
状態でスタックすることを回避するためには、app: <vm_name>
と kubevirt.io/created-by
ラベルの両方を使用します。kubevirt.io/created-by
ラベルと一致させるには、仮想マシンの DataVolume
の UID を使用します。
前提条件
- OADP Operator がインストールされている。
- バックアップする必要がある仮想マシンにラベル付けした。
- 複数の仮想マシンのバックアップがある。
手順
多数の仮想マシンのバックアップを作成する前に、次のコマンドを実行して仮想マシンにラベルが付けられていることを確認します。
oc label vm <vm_name> app=<vm_name> -n openshift-adp
$ oc label vm <vm_name> app=<vm_name> -n openshift-adp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例に示すように、
Restore
CR でラベルセレクターを設定します。Restore
CR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシンを復元するには、次のコマンドを実行します。
oc apply -f <restore_cr_file_name>
$ oc apply -f <restore_cr_file_name>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
Restore
CR ファイルの名前を指定します。
5.13.1.6. クライアントバースト設定と QPS 設定を使用した DPA の設定 リンクのコピーリンクがクリップボードにコピーされました!
バースト設定は、制限が適用されるまで velero
サーバーに送信できる要求の数を決定するものです。バースト制限に達した後は、1 秒あたりのクエリー数 (QPS) 設定によって、1 秒あたりに送信できる追加の要求の数が決定されます。
バースト値と QPS 値を使用して Data Protection Application (DPA) を設定することにより、velero
サーバーのバースト値と QPS 値を設定できます。バースト値と QPS 値は、DPA の dpa.configuration.velero.client-burst
フィールドと dpa.configuration.velero.client-qps
フィールドを使用して設定できます。
前提条件
- OADP Operator がインストールされている。
5.13.1.7. ノードエージェントを非 root および非特権ユーザーとして設定する リンクのコピーリンクがクリップボードにコピーされました!
ノードエージェントのセキュリティーを強化するには、DataProtectionApplication
(DPA) カスタムリソース (CR) の spec.configuration.velero.disableFsBackup
設定を使用して、OADP Operator ノードエージェントデーモンセットを非 root および非特権ユーザーとして実行するように設定できます。
spec.configuration.velero.disableFsBackup
設定を true
に設定すると、ノードエージェントのセキュリティーコンテキストによってルートファイルシステムが読み取り専用に設定され、privileged
フラグが false
に設定されます。
spec.configuration.velero.disableFsBackup
を true
に設定すると、特権コンテナーの必要性がなくなり、読み取り専用のルートファイルシステムが適用されるため、ノードエージェントのセキュリティーが強化されます。
ただし、Kopia によるファイルシステムバックアップ (FSB) も無効になります。ワークロードがネイティブスナップショットをサポートしていないボリュームのバックアップに FSB に依存している場合は、disableFsBackup
設定がユースケースに適合するかどうかを評価する必要があります。
前提条件
- OADP Operator がインストールされている。
手順
次の例に示すように、DPA の
disableFsBackup
フィールドを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、ノードエージェントのセキュリティーコンテキストが非 root として実行するように設定され、root ファイルシステムが
readOnly
あることを確認します。oc get daemonset node-agent -o yaml
$ oc get daemonset node-agent -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例は次のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.13.1.8. ノードエージェントとノードラベルの設定 リンクのコピーリンクがクリップボードにコピーされました!
Data Protection Application (DPA) は、nodeSelector
フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector
フィールドは、推奨される形式のノード選択制約です。
手順
カスタムラベルを追加して、選択した任意のノードでノードエージェントを実行します。
oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記指定したラベルが、各ノードのラベルと一致する必要があります。
ノードのラベル付けに使用したのと同じカスタムラベルを
DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
フィールドで使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例は
nodeSelector
のアンチパターンです。この例は、node-role.kubernetes.io/infra: ""
とnode-role.kubernetes.io/worker: ""
の両方のラベルがノードに存在しない限り機能しません。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.13.1.9. ノードエージェントのロードアフィニティーの設定 リンクのコピーリンクがクリップボードにコピーされました!
DataProtectionApplication
(DPA) カスタムリソース (CR) の spec.podConfig.nodeSelector
オブジェクトを使用して、特定のノードにノードエージェント Pod をスケジュールできます。
次の例を参照してください。この例を使用すると、ラベル label.io/role: cpu-1
および other-label.io/other-role: cpu-2
を持つノードにノードエージェント Pod をスケジュールできます。
DPA 仕様の nodeagent.loadAffinity
オブジェクトを使用して、ノードエージェント Pod のスケジューリングにさらに制限を追加できます。
前提条件
-
cluster-admin
権限を持つユーザーとしてログインしている。 - OADP Operator がインストールされている。
- DPA CR が設定されている。
手順
次の例に示すように、DPA 仕様の
nodegent.loadAffinity
オブジェクトを設定します。この例では、ラベル
label.io/role: cpu-1
とラベルlabel.io/hostname
がnode1
またはnode2
のいずれかに一致するノードにのみ、ノードエージェント Pod がスケジュールされるようにします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.13.1.10. ノードエージェントのロードアフィニティーのガイドライン リンクのコピーリンクがクリップボードにコピーされました!
DataProtectionApplication
(DPA) カスタムリソース (CR) でノードエージェント loadAffinity
オブジェクトを設定するには、次のガイドラインを使用してください。
-
単純なノードマッチングの場合は、
spec.nodeagent.podConfig.nodeSelector
オブジェクトを使用します。 -
より複雑な状況の場合は、
podConfig.nodeSelector
オブジェクトを使用せずにloadAffinity.nodeSelector
オブジェクトを使用します。 -
podConfig.nodeSelector
オブジェクトとloadAffinity.nodeSelector
オブジェクトの両方を使用できます。ただし、loadAffinity
オブジェクトにはpodConfig
オブジェクトと同等かそれ以上の制限が必要です。この場合、podConfig.nodeSelector
のラベルは、loadAffinity.nodeSelector
オブジェクトで使用されるラベルのサブセットである必要があります。 -
DPA で
podConfig.nodeSelector
オブジェクトとloadAffinity.nodeSelector
オブジェクトの両方を設定した場合、matchExpressions
フィールドとmatchLabels
フィールドは使用できません。 DPA で
podConfig.nodeSelector
オブジェクトとloadAffinity.nodeSelector
オブジェクトの両方を設定するには、次の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.13.1.11. ノードエージェントの同時実行の設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスター内の各ノードで同時に実行できるノードエージェント操作の最大数を制御できます。
Data Protection Application (DPA) の次のフィールドのいずれかを使用して設定できます。
-
globalConfig
: すべてのノードにおけるノードエージェントのデフォルトの同時実行制限を定義します。 -
perNodeConfig
:nodeSelector
ラベルに基づいて、特定のノードに対して異なる同時実行制限を指定します。これにより、特定のノードが異なるリソース容量やロールを持つ柔軟な環境が実現されます。
前提条件
-
cluster-admin
権限を持つユーザーとしてログインしている。
手順
特定のノードに対して同時実行を使用する場合は、それらのノードにラベルを追加します。
oc label node/<node_name> label.io/instance-type='large'
$ oc label node/<node_name> label.io/instance-type='large'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow DPA インスタンスの同時実行フィールドを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.13.1.12. リポジトリーメンテナンスの設定 リンクのコピーリンクがクリップボードにコピーされました!
OADP リポジトリーのメンテナンスはバックグラウンドジョブであり、ノードエージェント Pod とは別に設定できます。そのため、ノードエージェントが実行されているノードでも実行されていないノードでも、リポジトリーメンテナンス Pod をスケジュールできます。
DataProtectionApplication
(DPA) カスタムリソース (CR) 内のリポジトリーメンテナンスジョブのアフィニティー設定を使用できるのは、バックアップリポジトリーとして Kopia を使用する場合だけです。
すべてのリポジトリーに影響するグローバルレベルでロードアフィニティーを設定できます。または、リポジトリーごとにロードアフィニティーを設定することもできます。グローバル設定とリポジトリーごとの設定を組み合わせて使用することもできます。
前提条件
-
cluster-admin
権限を持つユーザーとしてログインしている。 - OADP Operator がインストールされている。
- DPA CR が設定されている。
手順
次の一方または両方の方法を使用して、DPA 仕様の
loadAffinity
オブジェクトを設定します。グローバル設定: 次の例に示すように、すべてのリポジトリーのロードアフィニティーを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リポジトリーごとの設定: 次の例に示すように、リポジトリーごとにロードアフィニティーを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 各リポジトリーの
repositoryMaintenance
オブジェクトを設定します。
5.13.1.13. Velero ロードアフィニティーの設定 リンクのコピーリンクがクリップボードにコピーされました!
OADP をデプロイするごとに、1 つの Velero Pod が作成されます。その主な目的は、Velero のワークロードをスケジュールすることです。Velero Pod をスケジュールするには、DataProtectionApplication
(DPA) カスタムリソース (CR) 仕様の velero.podConfig.nodeSelector
および velero.loadAffinity
オブジェクトを使用できます。
Velero Pod を特定のノードに割り当てるには、podConfig.nodeSelector
オブジェクトを使用します。velero.loadAffinity
オブジェクトを設定して、Pod レベルのアフィニティーとアンチアフィニティーを指定することもできます。
OpenShift のスケジューラーがルールを適用し、Velero Pod のデプロイメントのスケジューリングを実行します。
前提条件
-
cluster-admin
権限を持つユーザーとしてログインしている。 - OADP Operator がインストールされている。
- DPA CR が設定されている。
手順
次の例に示すように、DPA 仕様で
velero.podConfig.nodeSelector
およびvelero.loadAffinity
オブジェクトを設定します。velero.podConfig.nodeSelector
オブジェクトの設定:Copy to Clipboard Copied! Toggle word wrap Toggle overflow velero.loadAffinity
オブジェクトの設定:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.13.1.14. DPA の imagePullPolicy 設定のオーバーライド リンクのコピーリンクがクリップボードにコピーされました!
OADP 1.4.0 以前では、Operator はすべてのイメージで Velero およびノードエージェント Pod の imagePullPolicy
フィールドを Always
に設定します。
OADP 1.4.1 以降では、Operator はまず、各イメージに sha256
または sha512
ダイジェストがあるかを確認し、それに応じて imagePullPolicy
フィールドを設定します。
-
イメージにダイジェストがある場合、Operator は
imagePullPolicy
をIfNotPresent
に設定します。 -
イメージにダイジェストがない場合、Operator は
imagePullPolicy
をAlways
に設定します。
Data Protection Application (DPA) の spec.imagePullPolicy
フィールドを使用して、imagePullPolicy
フィールドをオーバーライドすることもできます。
前提条件
- OADP Operator がインストールされている。
手順
以下の例のように、DPA の
spec.imagePullPolicy
フィールドを設定します。Data Protection Application の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
imagePullPolicy
の値を指定します。この例では、imagePullPolicy
フィールドがNever
に設定されています。
5.13.1.15. 増分バックアップのサポートについて リンクのコピーリンクがクリップボードにコピーされました!
OADP は、コンテナー化されたワークロードと OpenShift Virtualization ワークロードの両方で、block
および Filesystem
の永続ボリュームの増分バックアップをサポートしています。次の表は、File System Backup (FSB)、Container Storage Interface (CSI)、および CSI Data Mover のサポート状況をまとめたものです。
ボリュームモード | FSB - Restic | FSB - Kopia | CSI | CSI Data Mover |
---|---|---|---|---|
ファイルシステム | S [1]、I [2] | S [1]、I [2] | S [1] | S [1]、I [2] |
ブロック | N [3] | N [3] | S [1] | S [1]、I [2] |
ボリュームモード | FSB - Restic | FSB - Kopia | CSI | CSI Data Mover |
---|---|---|---|---|
ファイルシステム | N [3] | N [3] | S [1] | S [1]、I [2] |
ブロック | N [3] | N [3] | S [1] | S [1]、I [2] |
- バックアップをサポート
- 増分バックアップをサポート
- サポート対象外
CSI Data Mover バックアップでは、uploaderType
に関係なく Kopia が使用されます。
Red Hat は、OADP バージョン 1.3.0 以降と OpenShift Virtualization バージョン 4.14 以降の組み合わせのみをサポートします。
バージョン 1.3.0 より前の OADP は、OpenShift Virtualization のバックアップと復元ではサポートされていません。