使用 Trident Protect 保護應用程式
您可以使用自動保護原則或臨機方式拍攝快照和備份,以保護 Trident Protect 管理的所有應用程式。
|
|
您可以設定 Trident Protect 在資料保護作業期間凍結及解除凍結檔案系統。"深入瞭解如何使用 Trident Protect 設定檔案系統凍結"。 |
建立隨需快照
您可以隨時建立隨需快照。
|
|
如果叢集範圍的資源在應用程式定義中被明確引用,或引用了任何應用程式命名空間,則這些資源將包含在備份、快照或複製中。 |
-
建立自訂資源(CR)檔案並將其命名為
trident-protect-snapshot-cr.yaml。 -
在您建立的檔案中、設定以下屬性:
-
metadata.name:(必填)此自訂資源的名稱;請為您的環境選擇一個唯一且有意義的名稱。
-
spec.applicationRef:要建立快照的應用程式的 Kubernetes 名稱。
-
spec.appVaultRef:(必填)應儲存快照內容(元資料)的 AppVault 名稱。
-
spec.reclaimPolicy:(選用)定義當快照 CR 刪除時,快照的 AppArchive 會發生什麼情況。這意味著即使設為
Retain,快照也會被刪除。有效選項:-
Retain(預設) -
DeleteapiVersion: protect.trident.netapp.io/v1 kind: Snapshot metadata: namespace: my-app-namespace name: my-cr-name spec: applicationRef: my-application appVaultRef: appvault-name reclaimPolicy: Delete
-
-
-
在
trident-protect-snapshot-cr.yaml檔案中填入正確的值後,套用 CR:kubectl apply -f trident-protect-snapshot-cr.yaml
-
建立快照,並將括號中的值替換為您環境中的資訊。例如:
tridentctl-protect create snapshot <my_snapshot_name> --appvault <my_appvault_name> --app <name_of_app_to_snapshot> -n <application_namespace>
建立隨需備份
您可以隨時備份應用程式。
|
|
如果叢集範圍的資源在應用程式定義中被明確引用,或引用了任何應用程式命名空間,則這些資源將包含在備份、快照或複製中。 |
請確保 AWS 會話令牌的有效期限足以應付任何長時間運行的 s3 備份作業。如果令牌在備份作業期間過期,則操作可能會失敗。
-
有關檢查當前會話令牌過期時間的更多資訊,請參閱 "AWS API 文件"。
-
如需 AWS 資源憑證的詳細資訊,請參閱 "AWS IAM 文件"。
-
建立自訂資源(CR)檔案並將其命名為
trident-protect-backup-cr.yaml。 -
在您建立的檔案中、設定以下屬性:
-
metadata.name:(必填)此自訂資源的名稱;請為您的環境選擇一個唯一且有意義的名稱。
-
spec.applicationRef:(必需)要備份的應用程式的 Kubernetes 名稱。
-
spec.appVaultRef:(必填)應儲存備份內容的 AppVault 名稱。
-
spec.dataMover:(選用)一個字串,指示要用於備份作業的備份工具。可能的值(區分大小寫):
-
Restic -
Kopia(預設)
-
-
spec.reclaimPolicy:(選用)定義備份從其聲明中釋放後會發生什麼。可能的值:
-
Delete -
Retain(預設)
-
-
spec.snapshotRef:(可選):要用作備份來源的快照名稱。如果未提供,則會建立並備份一個臨時快照。
YAML 範例:
--- apiVersion: protect.trident.netapp.io/v1 kind: Backup metadata: namespace: my-app-namespace name: my-cr-name spec: applicationRef: my-application appVaultRef: appvault-name dataMover: Kopia -
-
在
trident-protect-backup-cr.yaml檔案中填入正確的值後,套用 CR:kubectl apply -f trident-protect-backup-cr.yaml
-
建立備份,並將括號中的值替換為您環境中的資訊。例如:
tridentctl-protect create backup <my_backup_name> --appvault <my-vault-name> --app <name_of_app_to_back_up> --data-mover <Kopia_or_Restic> -n <application_namespace>您可以選擇使用
--full-backup標誌來指定備份是否為非增量備份。預設情況下,所有備份均為增量備份。使用此標誌後,備份將變為非增量備份。最佳實踐是定期執行完整備份,並在兩次完整備份之間執行增量備份,以最大程度地降低還原風險。
支援的備份註釋
下表說明建立備份 CR 時可使用的註解:
| 註解 | 類型 | 說明 | 預設值 |
|---|---|---|---|
protect.trident.netapp.io/full-backup |
字串 |
指定備份是否為非增量備份。設定為 `true`可建立非增量備份。最佳實踐是定期執行完整備份,並在兩次完整備份之間執行增量備份,以最大程度地降低還原相關風險。 |
"false" |
protect.trident.netapp.io/snapshot-completion-timeout |
字串 |
允許完成整個快照作業的最長時間。 |
"60 分鐘" |
protect.trident.netapp.io/volume-snapshots-ready-to-use-timeout |
字串 |
磁碟區快照達到可用狀態所允許的最長時間。 |
"30 分鐘" |
protect.trident.netapp.io/volume-snapshots-created-timeout |
字串 |
建立磁碟區快照所允許的最長時間。 |
"5 分鐘" |
protect.trident.netapp.io/pvc-bind-timeout-sec |
字串 |
等待所有新建立的 PersistentVolumeClaims(PVC)達到 `Bound`階段的最長時間(以秒為單位),超過此時間操作將會失敗。 |
"1200"(20 分鐘) |
建立資料保護排程
保護原則透過按定義的排程建立快照、備份或兩者來保護應用程式。您可以選擇每小時、每天、每週和每月建立快照和備份,並可指定要保留的副本數量。您可以使用 full-backup-rule 註解來排程非增量完整備份。預設情況下,所有備份都是增量備份。定期執行完整備份以及其間的增量備份,有助於降低與還原相關的風險。
|
|
|
-
建立自訂資源(CR)檔案並將其命名為
trident-protect-schedule-cr.yaml。 -
在您建立的檔案中、設定以下屬性:
-
metadata.name:(必填)此自訂資源的名稱;請為您的環境選擇一個唯一且有意義的名稱。
-
spec.dataMover:(選用)一個字串,指示要用於備份作業的備份工具。可能的值(區分大小寫):
-
Restic -
Kopia(預設)
-
-
spec.applicationRef:要備份的應用程式的 Kubernetes 名稱。
-
spec.appVaultRef:(必填)應儲存備份內容的 AppVault 名稱。
-
spec.backupRetention:(必填)要保留的備份數量。零表示不應建立任何備份(僅快照)。
-
spec.backupReclaimPolicy:(選用)決定如果在保留期間內刪除備份 CR 時,備份會發生什麼情況。保留期間過後,備份一律會被刪除。可能的值(區分大小寫):
-
Retain(預設) -
Delete
-
-
spec.snapshotRetention:(必填)要保留的快照數量。零表示不建立任何快照。
-
spec.snapshotReclaimPolicy:(選用)決定在保留期間內刪除快照 CR 時,快照會發生什麼情況。保留期間過後,快照一律會被刪除。可能的值(區分大小寫):
-
Retain -
Delete(預設)
-
-
spec.granularity:排程應執行的頻率。可能的值以及相關的必填欄位:
-
Hourly(需要您指定spec.minute) -
Daily(需要您指定spec.minute和spec.hour) -
Weekly(需要您指定spec.minute, spec.hour、spec.dayOfWeek) -
Monthly(需要您指定spec.minute, spec.hour、spec.dayOfMonth) -
Custom
-
-
spec.dayOfMonth:(選用)排程應執行的月份日期(1 - 31)。如果精細度設定為
Monthly,則此欄位為必填。此值必須以字串形式提供。 -
spec.dayOfWeek:(選用)排程應執行的星期幾(0 - 7)。值為 0 或 7 表示星期日。如果精細度設為
Weekly,則此欄位為必填項。該值必須以字串形式提供。 -
spec.hour:(選用)排程應執行的一天中的小時(0 - 23)。如果粒度設定為
Daily、Weekly`或 `Monthly,則此欄位為必填項。值必須以字串形式提供。 -
spec.minute:(選用)排程應執行的小時分鐘數(0 - 59)。如果粒度設定為
Hourly、Daily、Weekly`或 `Monthly,則此欄位為必填項。該值必須以字串形式提供。備份和快照排程的範例 YAML:
--- apiVersion: protect.trident.netapp.io/v1 kind: Schedule metadata: namespace: my-app-namespace name: my-cr-name spec: dataMover: Kopia applicationRef: my-application appVaultRef: appvault-name backupRetention: "15" snapshotRetention: "15" granularity: Daily hour: "0" minute: "0"僅快照排程的範例 YAML :
--- apiVersion: protect.trident.netapp.io/v1 kind: Schedule metadata: namespace: my-app-namespace name: my-snapshot-schedule spec: applicationRef: my-application appVaultRef: appvault-name backupRetention: "0" snapshotRetention: "15" granularity: Daily hour: "2" minute: "0" -
-
在
trident-protect-schedule-cr.yaml檔案中填入正確的值後,套用 CR:kubectl apply -f trident-protect-schedule-cr.yaml
-
建立保護排程,並將括號中的值替換為您環境中的資訊。例如:
您可以使用 `tridentctl-protect create schedule --help`來查看此命令的詳細說明資訊。 tridentctl-protect create schedule <my_schedule_name> \ --appvault <my_appvault_name> \ --app <name_of_app_to_snapshot> \ --backup-retention <how_many_backups_to_retain> \ --backup-reclaim-policy <Retain|Delete (default Retain)> \ --data-mover <Kopia_or_Restic> \ --day-of-month <day_of_month_to_run_schedule> \ --day-of-week <day_of_week_to_run_schedule> \ --granularity <frequency_to_run> \ --hour <hour_of_day_to_run> \ --minute <minute_of_hour_to_run> \ --recurrence-rule <recurrence> \ --snapshot-retention <how_many_snapshots_to_retain> \ --snapshot-reclaim-policy <Retain|Delete (default Delete)> \ --full-backup-rule <string> \ --run-immediately <true|false> \ -n <application_namespace>以下旗標可讓您對排程進行更多控制:
-
完整備份排程:使用
--full-backup-rule標誌來排程非增量完整備份。此標誌僅適用於--granularity Daily。可能的值:-
Always:每天都要建立完整備份。 -
特定工作日:指定一個或多個以逗號分隔的日期(例如,
"Monday,Thursday")。有效值:Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday。--full-backup-rule標誌不適用於每小時、每週或每月粒度。
-
-
僅快照排程:設定
--backup-retention 0並為--snapshot-retention指定大於零的值。
-
支援的排程註釋
下表描述了建立排程 CR 時可以使用的註釋:
| 註解 | 類型 | 說明 | 預設值 |
|---|---|---|---|
protect.trident.netapp.io/full-backup-rule |
字串 |
指定完整備份的調度規則。您可以將其設定為 |
未設定 (所有備份均為增量備份) |
protect.trident.netapp.io/snapshot-completion-timeout |
字串 |
允許完成整個快照作業的最長時間。 |
"60 分鐘" |
protect.trident.netapp.io/volume-snapshots-ready-to-use-timeout |
字串 |
磁碟區快照達到可用狀態所允許的最長時間。 |
"30 分鐘" |
protect.trident.netapp.io/volume-snapshots-created-timeout |
字串 |
建立磁碟區快照所允許的最長時間。 |
"5 分鐘" |
protect.trident.netapp.io/pvc-bind-timeout-sec |
字串 |
等待所有新建立的 PersistentVolumeClaims(PVC)達到 `Bound`階段的最長時間(以秒為單位),超過此時間操作將會失敗。 |
"1200"(20 分鐘) |
刪除快照
刪除不再需要的已排程或隨需快照。
-
刪除與快照相關聯的快照 CR:
kubectl delete snapshot <snapshot_name> -n my-app-namespace
刪除備份
刪除不再需要的排程備份或隨需備份。
|
|
請確保將回收策略設定為 Delete,以從物件儲存中刪除所有備份資料。此策略的預設設定為 Retain,以避免意外資料遺失。如果未將策略變更為 Delete,則備份資料將保留在物件儲存中,需要手動刪除。
|
-
刪除與備份相關聯的備份 CR:
kubectl delete backup <backup_name> -n my-app-namespace
檢查備份作業的狀態
您可以使用命令列來檢查正在進行、已完成或已失敗的備份作業狀態。
-
使用以下命令檢索備份作業的狀態,將括號中的值替換為您環境中的資訊:
kubectl get backup -n <namespace_name> <my_backup_cr_name> -o jsonpath='{.status}'
啟用 azure-netapp-files(ANF)作業的備份和還原
如果您已安裝 Trident Protect,則可以為使用 azure-netapp-files 儲存類別且在 Trident 24.06 之前建立的儲存後端啟用節省空間的備份和還原功能。此功能適用於 NFSv4 磁碟區,並且不會佔用容量池中的額外空間。
請確保以下事項:
-
您已安裝 Trident Protect 。
-
您已在 Trident Protect 中定義了一個應用程式。在您完成此程序之前,該應用程式的保護功能將受到限制。
-
您已選擇 `azure-netapp-files`作為儲存後端的預設儲存類別。
展開以檢視設定步驟
-
如果 ANF 磁碟區是在升級到 Trident 24.10 之前建立的,請在 Trident 中執行以下操作:
-
為每個基於 azure-netapp-files 且與應用程式相關聯的 PV 啟用 Snapshot 目錄:
tridentctl update volume <pv name> --snapshot-dir=true -n trident -
確認已為每個關聯的 PV 啟用 Snapshot 目錄:
tridentctl get volume <pv name> -n trident -o yaml | grep snapshotDir回應:
snapshotDirectory: "true"
+
如果未啟用快照目錄,Trident Protect 將選擇常規備份功能,該功能會在備份過程中暫時佔用容量池中的空間。在這種情況下,請確保容量池中有足夠的空間來建立一個與待備份磁碟區大小相同的臨時磁碟區。 -
該應用程式已準備好使用 Trident Protect 進行備份和還原。每個 PVC 也可供其他應用程式用於備份和還原。