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 をインストールするには、まずデフォルトのソフトウェアカタログソースを無効にし、Operator カタログをミラーリングする必要があります。詳細は、非接続環境での Operator Lifecycle Manager の使用 を参照してください。
Red Hat は、OADP バージョン 1.3.0 以降と OpenShift Virtualization バージョン 4.14 以降の組み合わせのみをサポートします。
バージョン 1.3.0 より前の OADP は、OpenShift Virtualization のバックアップと復元ではサポートされていません。
5.13.1.1. OpenShift Virtualization を使用した OADP のインストールと設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、OADP Operator をインストールして OADP をインストールします。
最新バージョンの OADP Operator は、Velero 1.16 をインストールします。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
- ストレージプロバイダーの指示に従って、OADP Operator をインストールします。
-
kubevirtおよびopenshiftOADP プラグインを使用して Data Protection Application (DPA) をインストールします。 Backupカスタムリソース (CR) を作成して、仮想マシンをバックアップします。警告Red Hat のサポート対象は、次のオプションに限られています。
- CSI バックアップ
- DataMover による CSI バックアップ
RestoreCR を作成してBackupCR を復元します。
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がない場合、インストールは失敗します。
手順
-
Ecosystem
Installed Operators をクリックし、OADPOperator を選択します。 - Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
YAML View をクリックして、
DataProtectionApplicationマニフェストのパラメーターを更新します。apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> namespace: openshift-adp spec: configuration: velero: defaultPlugins: - kubevirt - gcp - csi - openshift resourceTimeout: 10m nodeAgent: enable: true uploaderType: kopia podConfig: nodeSelector: <node_selector> backupLocations: - velero: provider: gcp default: true credential: key: cloud name: <default_secret> objectStorage: bucket: <bucket_name> prefix: <prefix>ここでは、以下のようになります。
namespace-
OADP のデフォルトの名前空間である
openshift-adpを指定します。namespace は変数であり、設定可能です。 kubevirt-
OpenShift 仮想化には
kubevirtプラグインが必須であることを指定します。 gcp-
バックアッププロバイダー (例:
gcp)用のプラグインを指定します (存在する場合)。 csi-
CSI スナップショットを使用して PV をバックアップするには、
csiプラグインが必須であることを指定します。csiプラグインは、Velero CSI ベータスナップショット API を使用します。スナップショットの場所を設定する必要はありません。 openshift-
openshiftプラグインが必須であることを指定します。 リソースタイムアウト- Velero CRD の可用性、ボリュームスナップショットの削除、バックアップリポジトリーの可用性など、複数の Velero リソースについてタイムアウトが発生するまでの待機時間を分単位で指定します。デフォルトは 10m です。
ノードエージェント- 管理要求をサーバーにルーティングする管理エージェントを指定します。
enable-
nodeAgentを有効にして File System Backup を実行する場合は、この値をtrueに設定します。 アップローダータイプ-
アップローダーの種類を指定します。組み込み DataMover を使用するには、アップローダーとして
kopiaと入力します。nodeAgentはデーモンセットをデプロイします。これは、nodeAgentPod が各ワーキングノード上で実行されることを意味します。File System Backup を設定するには、spec.defaultVolumesToFsBackup: trueをBackupCR に追加します。 nodeSelector- Kopia が利用可能なノードを指定します。デフォルトでは、Kopia はすべてのノードで実行されます。
provider- バックアッププロバイダーを指定します。
name-
バックアッププロバイダーにデフォルトのプラグインを使用する場合、
シークレットの正しいデフォルト名を指定します。たとえば、cloud-credentials-gcp などです。カスタム名を指定すると、そのカスタム名がバックアップの場所に使用されます。Secret名を指定しない場合は、デフォルトの名前が使用されます。 bucket- バックアップの保存場所としてバケットを指定します。バケットが Velero バックアップ専用のバケットでない場合は、接頭辞を指定する必要があります。
prefix-
バケットが複数の用途で使用される場合、Velero バックアップのプレフィックスを指定します。たとえば、
velero などです。
- Create をクリックします。
検証
次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。
$ oc get all -n openshift-adpNAME READY STATUS RESTARTS AGE pod/oadp-operator-controller-manager-67d9494d47-6l8z8 2/2 Running 0 2m8s pod/node-agent-9cq4q 1/1 Running 0 94s pod/node-agent-m4lts 1/1 Running 0 94s pod/node-agent-pv4kr 1/1 Running 0 95s pod/velero-588db7f655-n842v 1/1 Running 0 95s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/oadp-operator-controller-manager-metrics-service ClusterIP 172.30.70.140 <none> 8443/TCP 2m8s service/openshift-adp-velero-metrics-svc ClusterIP 172.30.10.0 <none> 8085/TCP 8h NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/node-agent 3 3 3 3 3 <none> 96s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/oadp-operator-controller-manager 1/1 1 1 2m9s deployment.apps/velero 1/1 1 1 96s NAME DESIRED CURRENT READY AGE replicaset.apps/oadp-operator-controller-manager-67d9494d47 1 1 1 2m9s replicaset.apps/velero-588db7f655 1 1 1 96s次のコマンドを実行して、
DataProtectionApplication(DPA) が調整されていることを確認します。$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}-
typeがReconciledに設定されていることを確認します。 次のコマンドを実行して、Backup Storage Location を確認し、
PHASEがAvailableであることを確認します。$ oc get backupstoragelocations.velero.io -n openshift-adpNAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
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プラグインを追加した。 -
DataProtectionApplicationCR でBackupStorageLocationCR を設定しており、BackupStorageLocationが使用可能である。
手順
次の例に示すように、
BackupCR を設定します。BackupCR の例apiVersion: velero.io/v1 kind: Backup metadata: name: vmbackupsingle namespace: openshift-adp spec: snapshotMoveData: true includedNamespaces: - <vm_namespace> labelSelector: matchLabels: app: <vm_app_name> storageLocation: <backup_storage_location_name>ここでは、以下のようになります。
vm_namespace- 仮想マシンを作成した名前空間の名前を指定します。
vm_app_name- バックアップが必要な仮想マシン名を指定します。
バックアップストレージの場所名-
BackupStorageLocationCR の名前を指定します。
BackupCR を作成するには、次のコマンドを実行します。$ oc apply -f <backup_cr_file_name>ここでは、以下のようになります。
バックアップ CR ファイル名-
バックアップCR ファイルの名前を指定します。
5.13.1.4. 1 つの仮想マシンの復元 リンクのコピーリンクがクリップボードにコピーされました!
Backup カスタムリソース (CR) のラベルセレクターを使用して 1 つの仮想マシンをバックアップした後、Restore CR を作成してバックアップを指すように設定できます。この復元操作では、1 つの仮想マシンが復元されます。
前提条件
- OADP Operator がインストールされている。
- ラベルセレクターを使用して 1 つの仮想マシンをバックアップした。
手順
次の例に示すように、
RestoreCR を設定します。RestoreCR の例apiVersion: velero.io/v1 kind: Restore metadata: name: vmrestoresingle namespace: openshift-adp spec: backupName: vmbackupsingle restorePVs: trueここでは、以下のようになります。
VM バックアップシングル- 1 つの仮想マシンのバックアップ名を指定します。
1 つの仮想マシンを復元するには、次のコマンドを実行します。
$ oc apply -f <restore_cr_file_name>ここでは、以下のようになります。
復元 CR ファイル名復元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次の例に示すように、
RestoreCR でラベルセレクターを設定します。RestoreCR の例apiVersion: velero.io/v1 kind: Restore metadata: name: singlevmrestore namespace: openshift-adp spec: backupName: multiplevmbackup restorePVs: true LabelSelectors: - matchLabels: kubevirt.io/created-by: <datavolume_uid> - matchLabels: app: <vm_name>ここでは、以下のようになります。
データボリューム UID-
復元する仮想マシンの
データボリュームの UID を指定します。たとえば、b6…53a-ddd7-4d9d-9407-a0c…e5です。 VM 名-
復元したい仮想マシンの名前を指定します。たとえば、
test-vmです。
仮想マシンを復元するには、次のコマンドを実行します。
$ oc apply -f <restore_cr_file_name>ここでは、以下のようになります。
復元 CR ファイル名-
復元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 がインストールされている。
手順
次の例に示すように、DPA の
client-burstフィールドとclient-qpsフィールドを設定します。Data Protection Application の例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: test-dpa namespace: openshift-adp spec: backupLocations: - name: default velero: config: insecureSkipTLSVerify: "true" profile: "default" region: <bucket_region> s3ForcePathStyle: "true" s3Url: <bucket_url> credential: key: cloud name: cloud-credentials default: true objectStorage: bucket: <bucket_name> prefix: velero provider: aws configuration: nodeAgent: enable: true uploaderType: restic velero: client-burst: 500 client-qps: 300 defaultPlugins: - openshift - aws - kubevirtここでは、以下のようになります。
クライアントバースト-
クライアントバースト値を指定します。この例では、client-burstフィールドは 500 に設定されています。 クライアント QPS-
クライアント QPS値を指定します。この例では、client-qpsフィールドは 300 に設定されています。
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フィールドを設定します。apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: ts-dpa namespace: openshift-adp spec: backupLocations: - velero: credential: key: cloud name: cloud-credentials default: true objectStorage: bucket: <bucket_name> prefix: velero provider: gcp configuration: nodeAgent: enable: true uploaderType: kopia velero: defaultPlugins: - csi - gcp - openshift disableFsBackup: trueここでは、以下のようになります。
ノードエージェント- DPA でノードエージェントを有効にすることを指定します。
disableFsBackup-
disableFsBackupフィールドをtrueに設定することを指定します。
検証
次のコマンドを実行して、ノードエージェントのセキュリティーコンテキストが非 root として実行するように設定され、root ファイルシステムが
readOnlyあることを確認します。$ oc get daemonset node-agent -o yaml出力例は次のとおりです。
apiVersion: apps/v1 kind: DaemonSet metadata: ... name: node-agent namespace: openshift-adp ... spec: ... template: metadata: ... spec: containers: ... securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true ... nodeSelector: kubernetes.io/os: linux os: name: linux restartPolicy: Always schedulerName: default-scheduler securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault serviceAccount: velero serviceAccountName: velero ....ここでは、以下のようになります。
allowPrivilegeEscalation-
allowPrivilegeEscalationフィールドが false であることを指定します。 privileged-
特権フィールドが false であることを指定します。 readOnlyRootFilesystem- ルートファイルシステムが読み取り専用であることを指定します。
runAsNonRoot- ノードエージェントを非 root ユーザーとして実行することを指定します。
5.13.1.8. ノードエージェントとノードラベルの設定 リンクのコピーリンクがクリップボードにコピーされました!
Data Protection Application (DPA) は、nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される形式のノード選択制約です。
手順
カスタムラベルを追加して、選択した任意のノードでノードエージェントを実行します。
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""注記指定したラベルが、各ノードのラベルと一致する必要があります。
ノードのラベル付けに使用したのと同じカスタムラベルを
DPA.spec.configuration.nodeAgent.podConfig.nodeSelectorフィールドで使用します。configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/nodeAgent: ""次の例は
nodeSelectorのアンチパターンです。この例は、node-role.kubernetes.io/infra: ""とnode-role.kubernetes.io/worker: ""の両方のラベルがノードに存在しない限り機能しません。configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/infra: "" node-role.kubernetes.io/worker: ""
5.13.1.9. ノードエージェントのロードアフィニティーの設定 リンクのコピーリンクがクリップボードにコピーされました!
DataProtectionApplication (DPA) カスタムリソース (CR) の spec.podConfig.nodeSelector オブジェクトを使用して、特定のノードにノードエージェント Pod をスケジュールできます。
次の例を参照してください。この例を使用すると、ラベル label.io/role: cpu-1 および other-label.io/other-role: cpu-2 を持つノードにノードエージェント Pod をスケジュールできます。
...
spec:
configuration:
nodeAgent:
enable: true
uploaderType: kopia
podConfig:
nodeSelector:
label.io/role: cpu-1
other-label.io/other-role: cpu-2
...
DPA 仕様の nodeagent.loadAffinity オブジェクトを使用して、ノードエージェント Pod のスケジューリングにさらに制限を追加できます。
前提条件
-
cluster-admin権限を持つユーザーとしてログインしている。 - OADP Operator がインストールされている。
- DPA CR が設定されている。
手順
次の例に示すように、DPA 仕様の
nodegent.loadAffinityオブジェクトを設定します。この例では、ラベル
label.io/role: cpu-1とラベルlabel.io/hostnameがnode1またはnode2のいずれかに一致するノードにのみ、ノードエージェント Pod がスケジュールされるようにします。... spec: configuration: nodeAgent: enable: true loadAffinity: - nodeSelector: matchLabels: label.io/role: cpu-1 matchExpressions: - key: label.io/hostname operator: In values: - node1 - node2 ...ここでは、以下のようになります。
ロードアフィニティー-
matchLabels オブジェクトとmatchExpressionsオブジェクトを追加することで、loadAffinityオブジェクトを指定します。 matchExpressions-
ノードエージェント Pod のスケジューリングに制限を追加する
matchExpressionsオブジェクトを指定します。
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オブジェクトの両方を設定するには、次の例を参照してください。... spec: configuration: nodeAgent: enable: true uploaderType: kopia loadAffinity: - nodeSelector: matchLabels: label.io/location: 'US' label.io/gpu: 'no' podConfig: nodeSelector: label.io/gpu: 'no'
5.13.1.11. ノードエージェントの同時実行の設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスター内の各ノードで同時に実行できるノードエージェント操作の最大数を制御できます。
Data Protection Application (DPA) の次のフィールドのいずれかを使用して設定できます。
-
globalConfig: すべてのノードにおけるノードエージェントのデフォルトの同時実行制限を定義します。 -
perNodeConfig:nodeSelectorラベルに基づいて、特定のノードに対して異なる同時実行制限を指定します。これにより、特定のノードが異なるリソース容量やロールを持つ柔軟な環境が実現されます。
前提条件
-
cluster-admin権限を持つユーザーとしてログインしている。
手順
特定のノードに対して同時実行を使用する場合は、それらのノードにラベルを追加します。
$ oc label node/<node_name> label.io/instance-type='large'DPA インスタンスの同時実行フィールドを設定します。
configuration: nodeAgent: enable: true uploaderType: kopia loadConcurrency: globalConfig: 1 perNodeConfig: - nodeSelector: matchLabels: label.io/instance-type: large number: 3ここでは、以下のようになります。
globalConfig-
グローバル同時接続数を指定します。デフォルト値は 1 です。これは同時実行がなく、1 つの負荷のみが許可されることを意味します。
globalConfig値に制限はありません。 label.io/instance-type- ノードごとの同時実行性を示すラベルを指定します。
number- ノードごとの同時接続数を指定します。たとえば、インスタンスのタイプとサイズに基づき、ノードごとに多数の同時実行数を指定できます。ノードごとの同時実行数の範囲は、グローバル同時実行数と同じです。設定ファイルにノードごとの同時実行数とグローバル同時実行数が含まれている場合、ノードごとの同時実行数が優先されます。
5.13.1.12. リポジトリーメンテナンスの設定 リンクのコピーリンクがクリップボードにコピーされました!
OADP リポジトリーのメンテナンスはバックグラウンドジョブであり、ノードエージェント Pod とは別に設定できます。そのため、ノードエージェントが実行されているノードでも実行されていないノードでも、リポジトリーメンテナンス Pod をスケジュールできます。
DataProtectionApplication (DPA) カスタムリソース (CR) 内のリポジトリーメンテナンスジョブのアフィニティー設定を使用できるのは、バックアップリポジトリーとして Kopia を使用する場合だけです。
すべてのリポジトリーに影響するグローバルレベルでロードアフィニティーを設定できます。または、リポジトリーごとにロードアフィニティーを設定することもできます。グローバル設定とリポジトリーごとの設定を組み合わせて使用することもできます。
前提条件
-
cluster-admin権限を持つユーザーとしてログインしている。 - OADP Operator がインストールされている。
- DPA CR が設定されている。
手順
次の一方または両方の方法を使用して、DPA 仕様の
loadAffinityオブジェクトを設定します。グローバル設定: 次の例に示すように、すべてのリポジトリーのロードアフィニティーを設定します。
... spec: configuration: repositoryMaintenance: global: podResources: cpuRequest: "100m" cpuLimit: "200m" memoryRequest: "100Mi" memoryLimit: "200Mi" loadAffinity: - nodeSelector: matchLabels: label.io/gpu: 'no' matchExpressions: - key: label.io/location operator: In values: - US - EUここでは、以下のようになります。
リポジトリーメンテナンス-
例に示すように、
repositoryMaintenanceオブジェクトを指定します。 global-
すべてのリポジトリーのロードアフィニティーを設定するための
グローバルオブジェクトを指定します。
リポジトリーごとの設定: 次の例に示すように、リポジトリーごとにロードアフィニティーを設定します。
... spec: configuration: repositoryMaintenance: myrepositoryname: loadAffinity: - nodeSelector: matchLabels: label.io/cpu: 'yes'ここでは、以下のようになります。
私のリポジトリー名-
各リポジトリーの
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オブジェクトの設定:... spec: configuration: velero: podConfig: nodeSelector: some-label.io/custom-node-role: backup-corevelero.loadAffinityオブジェクトの設定:... spec: configuration: velero: loadAffinity: - nodeSelector: matchLabels: label.io/gpu: 'no' matchExpressions: - key: label.io/location operator: In values: - US - EU
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 の例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: test-dpa namespace: openshift-adp spec: backupLocations: - name: default velero: config: insecureSkipTLSVerify: "true" profile: "default" region: <bucket_region> s3ForcePathStyle: "true" s3Url: <bucket_url> credential: key: cloud name: cloud-credentials default: true objectStorage: bucket: <bucket_name> prefix: velero provider: aws configuration: nodeAgent: enable: true uploaderType: kopia velero: defaultPlugins: - openshift - aws - kubevirt - csi imagePullPolicy: Neverここでは、以下のようになります。
imagePullPolicy-
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 が使用されます。