使用 Trident Protect 恢復應用程式
您可以使用 Trident Protect 從快照或備份還原應用程式。如果要將應用程式還原到同一個叢集,從現有快照還原速度會更快。
|
|
|
從備份還原到不同的命名空間
當您使用 BackupRestore CR 將備份還原到不同的命名空間時,Trident Protect 會在新的命名空間中還原應用程式,並為還原後的應用程式建立一個應用程式 CR。若要保護還原的應用程式,您可以建立隨需備份或快照,或建立保護排程。
|
|
|
請確保 AWS 工作階段權杖的有效期限足以應付任何長時間執行的 s3 還原作業。如果權杖在還原作業期間過期、作業可能會失敗。
-
有關檢查當前會話令牌過期時間的更多資訊,請參閱 "AWS API 文件"。
-
如需 AWS 資源憑證的詳細資訊,請參閱 "AWS IAM 文件"。
|
|
當您使用 Kopia 作為資料移動工具還原備份時,您可以選擇在 CR 中或使用 CLI 指定註釋,以控制 Kopia 使用的暫存的行為。有關可配置選項的更多資訊,請參閱 "Kopia 說明文件"。使用 `tridentctl-protect create --help`命令以取得有關使用 Trident Protect CLI 指定註釋的更多資訊。 |
-
建立自訂資源(CR)檔案並將其命名為
trident-protect-backup-restore-cr.yaml。 -
在您建立的檔案中、設定以下屬性:
-
metadata.name:(必填)此自訂資源的名稱;請為您的環境選擇一個唯一且有意義的名稱。
-
spec.appArchivePath:AppVault 內儲存備份內容的路徑。您可以使用以下命令來尋找此路徑:
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}' -
spec.appVaultRef:(必填)儲存備份內容的 AppVault 名稱。
-
spec.destinationApplicationName:(選用)還原應用程式的名稱。如果提供、還原的應用程式會使用此名稱。如果未提供、還原的應用程式會使用來源應用程式名稱。
-
spec.namespaceMapping:復原作業的來源命名空間到目標命名空間的對應。請將 `my-source-namespace`和 `my-destination-namespace`替換為您環境中的資訊。
--- apiVersion: protect.trident.netapp.io/v1 kind: BackupRestore metadata: name: my-cr-name namespace: my-destination-namespace spec: appArchivePath: my-backup-path appVaultRef: appvault-name destinationApplicationName: my-new-app-name namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}]
-
-
(可選)如果您只需要選擇應用程式中的某些資源進行還原,請新增篩選條件,以包含或排除帶有特定標籤的資源:
Trident Protect 會自動選擇一些資源,因為它們與您選擇的資源有關聯。例如,如果您選擇了持久卷聲明資源,並且它關聯了一個 pod,Trident Protect 也會恢復該關聯 pod。 -
resourceFilter.resourceSelectionCriteria:(篩選必需)使用 `Include`或 `Exclude`來包含或排除在 resourceMatchers 中定義的資源。新增以下 resourceMatchers 參數以定義要包含或排除的資源:
-
resourceFilter.resourceMatchers:resourceMatcher 物件的陣列。如果在此陣列中定義多個元素,則它們之間按 OR 運算匹配,每個元素內的欄位(group、kind、version)之間按 AND 運算匹配。
-
resourceMatchers[].group:(可選)要篩選的資源群組。
-
resourceMatchers[].kind:(可選)要篩選的資源類型。
-
resourceMatchers[].version:(可選)要篩選的資源版本。
-
resourceMatchers[].names:(可選)要過濾的資源的 Kubernetes metadata.name 欄位中的名稱。
-
resourceMatchers[].namespaces:(可選)要篩選的資源的 Kubernetes metadata.name 欄位中的命名空間。
-
resourceMatchers[].labelSelectors:(可選)資源在 Kubernetes metadata.name 欄位中定義的標籤選擇器字串 "Kubernetes 說明文件"。例如:
"trident.netapp.io/os=linux"例如:
-
-
spec: resourceFilter: resourceSelectionCriteria: "Include" resourceMatchers: - group: my-resource-group-1 kind: my-resource-kind-1 version: my-resource-version-1 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] - group: my-resource-group-2 kind: my-resource-kind-2 version: my-resource-version-2 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] -
-
在
trident-protect-backup-restore-cr.yaml檔案中填入正確的值後,套用 CR:kubectl apply -f trident-protect-backup-restore-cr.yaml
-
將備份還原到不同的命名空間,並將方括號中的值替換為您環境中的資訊。
namespace-mapping`引數使用冒號分隔的命名空間,將來源命名空間對應到正確的目標命名空間,格式為 `source1:dest1,source2:dest2。例如:tridentctl-protect create backuprestore <my_restore_name> \ --backup <backup_namespace>/<backup_to_restore> \ --namespace-mapping <source_to_destination_namespace_mapping> \ --destination-app-name<custom_app_name>\ -n <application_namespace>
從備份還原到原始命名空間
您可以隨時將備份還原到原始命名空間。執行就地還原時,Trident Protect 會自動管理保護排程和進行中的作業,以防止無效的還原點:
-
在還原開始之前,應用程式的所有已啟用保護排程都會停用。這可防止在還原應用程式資源時執行排程的備份或快照。
-
恢復成功完成後,只有恢復前已啟用的排程會重新啟用。先前已停用的排程仍保持停用狀態。
-
任何正在進行的備份或快照操作都會在還原開始前取消。如果操作在 5 分鐘內未取消,則還原將繼續進行,並在還原 CR 狀態中記錄警告。
請確保 AWS 工作階段權杖的有效期限足以應付任何長時間執行的 s3 還原作業。如果權杖在還原作業期間過期、作業可能會失敗。
-
有關檢查當前會話令牌過期時間的更多資訊,請參閱 "AWS API 文件"。
-
如需 AWS 資源憑證的詳細資訊,請參閱 "AWS IAM 文件"。
|
|
當您使用 Kopia 作為資料移動工具還原備份時,您可以選擇在 CR 中或使用 CLI 指定註釋,以控制 Kopia 使用的暫存的行為。有關可配置選項的更多資訊,請參閱 "Kopia 說明文件"。使用 `tridentctl-protect create --help`命令以取得有關使用 Trident Protect CLI 指定註釋的更多資訊。 |
-
建立自訂資源(CR)檔案並將其命名為
trident-protect-backup-ipr-cr.yaml。 -
在您建立的檔案中、設定以下屬性:
-
metadata.name:(必填)此自訂資源的名稱;請為您的環境選擇一個唯一且有意義的名稱。
-
spec.appArchivePath:AppVault 內儲存備份內容的路徑。您可以使用以下命令來尋找此路徑:
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}' -
spec.appVaultRef:(必填)儲存備份內容的 AppVault 名稱。
例如:
--- apiVersion: protect.trident.netapp.io/v1 kind: BackupInplaceRestore metadata: name: my-cr-name namespace: my-app-namespace spec: appArchivePath: my-backup-path appVaultRef: appvault-name -
-
(可選)如果您只需要選擇應用程式中的某些資源進行還原,請新增篩選條件,以包含或排除帶有特定標籤的資源:
Trident Protect 會自動選擇一些資源,因為它們與您選擇的資源有關聯。例如,如果您選擇了持久卷聲明資源,並且它關聯了一個 pod,Trident Protect 也會恢復該關聯 pod。 -
resourceFilter.resourceSelectionCriteria:(篩選必需)使用 `Include`或 `Exclude`來包含或排除在 resourceMatchers 中定義的資源。新增以下 resourceMatchers 參數以定義要包含或排除的資源:
-
resourceFilter.resourceMatchers:resourceMatcher 物件的陣列。如果在此陣列中定義多個元素,則它們之間按 OR 運算匹配,每個元素內的欄位(group、kind、version)之間按 AND 運算匹配。
-
resourceMatchers[].group:(可選)要篩選的資源群組。
-
resourceMatchers[].kind:(可選)要篩選的資源類型。
-
resourceMatchers[].version:(可選)要篩選的資源版本。
-
resourceMatchers[].names:(可選)要過濾的資源的 Kubernetes metadata.name 欄位中的名稱。
-
resourceMatchers[].namespaces:(可選)要篩選的資源的 Kubernetes metadata.name 欄位中的命名空間。
-
resourceMatchers[].labelSelectors:(可選)資源在 Kubernetes metadata.name 欄位中定義的標籤選擇器字串 "Kubernetes 說明文件"。例如:
"trident.netapp.io/os=linux"例如:
-
-
spec: resourceFilter: resourceSelectionCriteria: "Include" resourceMatchers: - group: my-resource-group-1 kind: my-resource-kind-1 version: my-resource-version-1 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] - group: my-resource-group-2 kind: my-resource-kind-2 version: my-resource-version-2 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] -
-
在
trident-protect-backup-ipr-cr.yaml檔案中填入正確的值後,套用 CR:kubectl apply -f trident-protect-backup-ipr-cr.yaml
-
將備份還原到原始命名空間,並將方括號中的值替換為您環境中的資訊。
backup參數使用命名空間和備份名稱,格式為<namespace>/<name>。例如:tridentctl-protect create backupinplacerestore <my_restore_name> \ --backup <namespace/backup_to_restore> \ -n <application_namespace>
從備份還原到不同的叢集
如果原始叢集出現問題、您可以將備份還原至不同的叢集。
|
|
|
請確保符合下列先決條件:
-
目標叢集已安裝 Trident Protect。
-
目標叢集可以存取與來源叢集相同的 AppVault 儲存桶路徑,備份檔案就儲存在該路徑中。
-
執行 `tridentctl-protect get appvaultcontent`命令時,請確保本機環境可以連接到 AppVault CR 中定義的物件儲存桶。如果網路限制導致無法存取,請改為在目標叢集的 Pod 內執行 Trident Protect CLI。
-
請確保 AWS 工作階段權杖的有效期限足以應付任何長時間執行的還原作業。如果權杖在還原作業期間過期、作業可能會失敗。
-
有關檢查當前會話令牌過期時間的更多資訊,請參閱 "AWS API 文件"。
-
如需 AWS 資源憑證的詳細資訊,請參閱 "AWS 文件"。
-
-
使用 Trident Protect CLI 外掛程式驗證 AppVault CR 是否存在於目標叢集上:
tridentctl-protect get appvault --context <destination_cluster_name>如果目標叢集上不存在 AppVault CR,請按照 "使用 Trident Protect AppVault 物件來管理儲存桶" 中的步驟建立它。 -
查看目標叢集上可用 AppVault 的備份內容,並記下 `appArchivePath`要還原的備份:
tridentctl-protect get appvaultcontent <appvault_name> \ --show-resources backup \ --show-paths \ --context <destination_cluster_name>執行此命令將顯示 AppVault 中的可用備份,包括其來源叢集、相應的應用程式名稱、時間戳記和歸檔路徑。
範例輸出:
+-------------+-----------+--------+-----------------+--------------------------+-------------+ | CLUSTER | APP | TYPE | NAME | TIMESTAMP | PATH | +-------------+-----------+--------+-----------------+--------------------------+-------------+ | production1 | wordpress | backup | wordpress-bkup-1| 2024-10-30 08:37:40 (UTC)| backuppath1 | | production1 | wordpress | backup | wordpress-bkup-2| 2024-10-30 08:37:40 (UTC)| backuppath2 | +-------------+-----------+--------+-----------------+--------------------------+-------------+
-
使用 AppVault 名稱和歸檔路徑將應用程式還原到目標叢集:
|
|
使用 CR 時,請確保用於應用程式還原的命名空間存在於目的地叢集上。 |
-
建立自訂資源(CR)檔案並將其命名為
trident-protect-backup-restore-cr.yaml。 -
在您建立的檔案中、設定以下屬性:
-
metadata.name:(必填)此自訂資源的名稱;請為您的環境選擇一個唯一且有意義的名稱。
-
spec.appVaultRef:(必填)儲存備份內容的 AppVault 名稱。
-
spec.appArchivePath:(必填)AppVault 內儲存備份內容的路徑。使用步驟 2 中的指令查看備份內容,並找到 `appArchivePath`要還原的備份。
-
spec.destinationApplicationName:(選用)還原應用程式的名稱。如果提供、還原的應用程式會使用此名稱。如果未提供、還原的應用程式會使用來源應用程式名稱。
-
spec.namespaceMapping:復原作業的來源命名空間到目標命名空間的對應。請將 `my-source-namespace`和 `my-destination-namespace`替換為您環境中的資訊。
例如:
apiVersion: protect.trident.netapp.io/v1 kind: BackupRestore metadata: name: my-cr-name namespace: my-destination-namespace spec: appVaultRef: appvault-name appArchivePath: my-backup-path destinationApplicationName: my-new-app-name namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}] -
-
在
trident-protect-backup-restore-cr.yaml檔案中填入正確的值後,套用 CR:kubectl apply -f trident-protect-backup-restore-cr.yaml
-
使用以下命令恢復應用程式,並將方括號中的值替換為您環境中的資訊。命名空間映射參數使用冒號分隔的命名空間,將來源命名空間對應到正確的目標命名空間,格式為 source1:dest1,source2:dest2。例如:
tridentctl-protect create backuprestore <restore_name> \ --namespace-mapping <source_to_destination_namespace_mapping> \ --appvault <appvault_name> \ --path <backup_path> \ --destination-app-name <custom_app_name> \ --context <destination_cluster_name> \ -n <application_namespace>
從快照還原到不同的命名空間
您可以使用自訂資源(CR)檔案從快照還原資料,還原到不同的命名空間或原始來源命名空間。當您使用 SnapshotRestore CR 將快照還原到不同的命名空間時,Trident Protect 會在新的命名空間中還原應用程式,並為還原的應用程式建立一個應用程式 CR。若要保護還原的應用程式,您可以建立隨需備份或快照,或建立保護排程。
|
|
|
請確保 AWS 工作階段權杖的有效期限足以應付任何長時間執行的 s3 還原作業。如果權杖在還原作業期間過期、作業可能會失敗。
-
有關檢查當前會話令牌過期時間的更多資訊,請參閱 "AWS API 文件"。
-
如需 AWS 資源憑證的詳細資訊,請參閱 "AWS IAM 文件"。
-
建立自訂資源(CR)檔案並將其命名為
trident-protect-snapshot-restore-cr.yaml。 -
在您建立的檔案中、設定以下屬性:
-
metadata.name:(必填)此自訂資源的名稱;請為您的環境選擇一個唯一且有意義的名稱。
-
spec.appVaultRef:(必填)儲存快照內容的 AppVault 名稱。
-
spec.appArchivePath:AppVault 內儲存快照內容的路徑。您可以使用以下命令來尋找此路徑:
kubectl get snapshots <SNAPHOT_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}' -
spec.destinationApplicationName:(選用)還原應用程式的名稱。如果提供、還原的應用程式會使用此名稱。如果未提供、還原的應用程式會使用來源應用程式名稱。
-
spec.namespaceMapping:復原作業的來源命名空間到目標命名空間的對應。請將 `my-source-namespace`和 `my-destination-namespace`替換為您環境中的資訊。
--- apiVersion: protect.trident.netapp.io/v1 kind: SnapshotRestore metadata: name: my-cr-name namespace: my-app-namespace spec: appVaultRef: appvault-name appArchivePath: my-snapshot-path namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}]
-
-
(可選)如果您只需要選擇應用程式中的某些資源進行還原,請新增篩選條件,以包含或排除帶有特定標籤的資源:
Trident Protect 會自動選擇一些資源,因為它們與您選擇的資源有關聯。例如,如果您選擇了持久卷聲明資源,並且它關聯了一個 pod,Trident Protect 也會恢復該關聯 pod。 -
resourceFilter.resourceSelectionCriteria:(篩選必需)使用 `Include`或 `Exclude`來包含或排除在 resourceMatchers 中定義的資源。新增以下 resourceMatchers 參數以定義要包含或排除的資源:
-
resourceFilter.resourceMatchers:resourceMatcher 物件的陣列。如果在此陣列中定義多個元素,則它們之間按 OR 運算匹配,每個元素內的欄位(group、kind、version)之間按 AND 運算匹配。
-
resourceMatchers[].group:(可選)要篩選的資源群組。
-
resourceMatchers[].kind:(可選)要篩選的資源類型。
-
resourceMatchers[].version:(可選)要篩選的資源版本。
-
resourceMatchers[].names:(可選)要過濾的資源的 Kubernetes metadata.name 欄位中的名稱。
-
resourceMatchers[].namespaces:(可選)要篩選的資源的 Kubernetes metadata.name 欄位中的命名空間。
-
resourceMatchers[].labelSelectors:(可選)資源在 Kubernetes metadata.name 欄位中定義的標籤選擇器字串 "Kubernetes 說明文件"。例如:
"trident.netapp.io/os=linux"例如:
-
-
spec: resourceFilter: resourceSelectionCriteria: "Include" resourceMatchers: - group: my-resource-group-1 kind: my-resource-kind-1 version: my-resource-version-1 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] - group: my-resource-group-2 kind: my-resource-kind-2 version: my-resource-version-2 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] -
-
在
trident-protect-snapshot-restore-cr.yaml檔案中填入正確的值後,套用 CR:kubectl apply -f trident-protect-snapshot-restore-cr.yaml
-
將快照還原到不同的命名空間,並將括號中的值替換為您環境中的資訊。
-
snapshot`引數使用命名空間和快照名稱,格式為 `<namespace>/<name>。 -
namespace-mapping`引數使用冒號分隔的命名空間,將來源命名空間對應到正確的目標命名空間,格式為 `source1:dest1,source2:dest2。例如:
tridentctl-protect create snapshotrestore <my_restore_name> \ --snapshot <namespace/snapshot_to_restore> \ --namespace-mapping <source_to_destination_namespace_mapping> \ --destination-app-name <custom_app_name> \ -n <application_namespace> -
從快照還原到原始命名空間
您可以隨時將快照還原到原始命名空間。執行就地還原時,Trident Protect 會自動管理保護排程和進行中的作業,以防止無效的還原點:
-
在還原開始之前,應用程式的所有已啟用保護排程都會停用。這可防止在還原應用程式資源時執行排程的備份或快照。
-
恢復成功完成後,只有恢復前已啟用的排程會重新啟用。先前已停用的排程仍保持停用狀態。
-
任何正在進行的備份或快照操作都會在還原開始前取消。如果操作在 5 分鐘內未取消,則還原將繼續進行,並在還原 CR 狀態中記錄警告。
請確保 AWS 工作階段權杖的有效期限足以應付任何長時間執行的 s3 還原作業。如果權杖在還原作業期間過期、作業可能會失敗。
-
有關檢查當前會話令牌過期時間的更多資訊,請參閱 "AWS API 文件"。
-
如需 AWS 資源憑證的詳細資訊,請參閱 "AWS IAM 文件"。
-
建立自訂資源(CR)檔案並將其命名為
trident-protect-snapshot-ipr-cr.yaml。 -
在您建立的檔案中、設定以下屬性:
-
metadata.name:(必填)此自訂資源的名稱;請為您的環境選擇一個唯一且有意義的名稱。
-
spec.appVaultRef:(必填)儲存快照內容的 AppVault 名稱。
-
spec.appArchivePath:AppVault 內儲存快照內容的路徑。您可以使用以下命令來尋找此路徑:
kubectl get snapshots <SNAPSHOT_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'--- apiVersion: protect.trident.netapp.io/v1 kind: SnapshotInplaceRestore metadata: name: my-cr-name namespace: my-app-namespace spec: appVaultRef: appvault-name appArchivePath: my-snapshot-path
-
-
(可選)如果您只需要選擇應用程式中的某些資源進行還原,請新增篩選條件,以包含或排除帶有特定標籤的資源:
Trident Protect 會自動選擇一些資源,因為它們與您選擇的資源有關聯。例如,如果您選擇了持久卷聲明資源,並且它關聯了一個 pod,Trident Protect 也會恢復該關聯 pod。 -
resourceFilter.resourceSelectionCriteria:(篩選必需)使用 `Include`或 `Exclude`來包含或排除在 resourceMatchers 中定義的資源。新增以下 resourceMatchers 參數以定義要包含或排除的資源:
-
resourceFilter.resourceMatchers:resourceMatcher 物件的陣列。如果在此陣列中定義多個元素,則它們之間按 OR 運算匹配,每個元素內的欄位(group、kind、version)之間按 AND 運算匹配。
-
resourceMatchers[].group:(可選)要篩選的資源群組。
-
resourceMatchers[].kind:(可選)要篩選的資源類型。
-
resourceMatchers[].version:(可選)要篩選的資源版本。
-
resourceMatchers[].names:(可選)要過濾的資源的 Kubernetes metadata.name 欄位中的名稱。
-
resourceMatchers[].namespaces:(可選)要篩選的資源的 Kubernetes metadata.name 欄位中的命名空間。
-
resourceMatchers[].labelSelectors:(可選)資源在 Kubernetes metadata.name 欄位中定義的標籤選擇器字串 "Kubernetes 說明文件"。例如:
"trident.netapp.io/os=linux"例如:
-
-
spec: resourceFilter: resourceSelectionCriteria: "Include" resourceMatchers: - group: my-resource-group-1 kind: my-resource-kind-1 version: my-resource-version-1 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] - group: my-resource-group-2 kind: my-resource-kind-2 version: my-resource-version-2 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] -
-
在
trident-protect-snapshot-ipr-cr.yaml檔案中填入正確的值後,套用 CR:kubectl apply -f trident-protect-snapshot-ipr-cr.yaml
-
將快照還原到原始命名空間,並將方括號中的值替換為您環境中的資訊。例如:
tridentctl-protect create snapshotinplacerestore <my_restore_name> \ --snapshot <namespace/snapshot_to_restore> \ -n <application_namespace>
檢查還原作業的狀態
您可以使用命令列來檢查正在進行、已完成或已失敗的還原作業狀態。
-
使用以下命令檢索還原作業的狀態,將方括號中的值替換為您環境中的資訊:
kubectl get backuprestore -n <namespace_name> <my_restore_cr_name> -o jsonpath='{.status}'