Skip to main content
NetApp Backup and Recovery
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

新增和保護 Kubernetes 應用程式

貢獻者 netapp-mwallis

NetApp Backup and Recovery 可讓您透過網頁 UI 或套用自訂資源檔案來新增 Kubernetes 應用程式。應用程式可以是以命名空間為基礎,由標準 Kubernetes 資源組成,或是以 VM 為基礎,由一個或多個虛擬機組成。

所需的NetApp Console角色

組織管理員或SnapCenter管理員。"了解NetApp Backup and Recovery存取角色""了解所有服務的NetApp Console存取角色"

新增並保護新的 Kubernetes 應用程式

保護 Kubernetes 應用程式的第一步是在 NetApp Backup and Recovery 中建立應用程式。建立應用程式後,Backup and Recovery 功能就能辨識 Kubernetes 叢集上正在執行的應用程式。

開始之前

在新增和保護 Kubernetes 應用程式之前,您需要"發現 Kubernetes 工作負載"

新增基於命名空間的應用程式(Web UI)
步驟
  1. 在NetApp Backup and Recovery中,選擇 Inventory

  2. 選擇一個 Kubernetes 實例,然後選擇「檢視」以查看與該實例關聯的資源。

  3. 選擇“應用程式”標籤。

  4. 選擇*建立應用程式*。

  5. 輸入應用程式的名稱。

  6. Cluster 清單中,選擇託管應用程式的叢集。

  7. Filters 下,選擇 Namespace 以按命名空間篩選應用程式。

  8. 或者,選擇以下任意欄位來搜尋您想要保護的資源:

    • 關聯的命名空間

    • 資源類型

    • 標籤選擇器

      1. 選擇 Add cluster-scoped resources 可新增叢集層級的資源。如果選擇新增,這些資源將在建立應用程式時新增到應用程式中。

      2. 或者,選擇“搜尋”以根據您的搜尋條件尋找資源。

        註 Backup and Recovery 不會儲存搜尋參數或結果;這些參數用於在選定的 Kubernetes 叢集中搜尋可以包含在應用程式中的資源。
  9. Backup and Recovery 會顯示符合您搜尋條件的資源清單。

  10. 如果清單包含您想要保護的資源,請選擇「下一步」。

  11. (可選)在「策略」區域中,選擇現有保護策略來保護應用程序,或建立新策略。如果不選擇策略,則建立的應用程式將不帶保護策略。你可以"新增保護策略"之後。

  12. 在*Prescripts and postscripts*區域中,啟用並配置您想要在備份操作之前或之後執行的任何prescript或postscript執行掛鉤。若要啟用處方或附言,您必須至少已建立了一個"執行鉤子模板"

  13. 選擇“創建”。

結果

應用程式建立完成後,將顯示在 Kubernetes 清單的 Applications 標籤中的應用程式清單中。Backup and Recovery 可根據您的設定保護應用程式,您可以在 Monitoring 區域中監控進度。

新增基於虛擬機器的應用程式(Web UI)
步驟
  1. 在NetApp Backup and Recovery中,選擇 Inventory

  2. 選擇一個 Kubernetes 實例,然後選擇「檢視」以查看與該實例關聯的資源。

  3. 選擇“應用程式”標籤。

  4. 選擇*建立應用程式*。

  5. 輸入應用程式的名稱。

  6. Cluster 清單中,選擇託管應用程式的叢集。

  7. Filters 下,選擇 Virtual machines 以建立基於 VM 的應用程式。

  8. 透過選擇命名空間並可選擇性地包含標籤選取器,尋找要新增至應用程式的虛擬機器。

    註 如果您從清單中選擇 VM,則應用程式定義是靜態的——之後不會向應用程式新增新的 VM(您需要編輯應用程式才能新增和保護它們)。如果您使用標籤選擇器,則無法選擇個別 VM 或編輯產生的清單,但之後任何與選擇器相符的 VM 都會自動包含在內並受到保護。

    選取的虛擬機器會顯示在右側清單中。

  9. 如果清單中包含您要保護的 VM,請選取 * 下一步 * 。

  10. (可選)在「策略」區域中,選擇現有保護策略來保護應用程序,或建立新策略。如果不選擇策略,則建立的應用程式將不帶保護策略。你可以"新增保護策略"之後。

  11. 在*Prescripts and postscripts*區域中,啟用並配置您想要在備份操作之前或之後執行的任何prescript或postscript執行掛鉤。若要啟用處方或附言,您必須至少已建立了一個"執行鉤子模板"

  12. 選擇“創建”。

結果

應用程式已建立並出現在 Kubernetes 清單的 應用程式 標籤中的應用程式清單中。 NetApp Console會根據您的設定啟用對應用程式的保護,並且您可以在備份和還原的*監控*區域中監控進度。

新增基於命名空間的應用程式(CR)
步驟
  1. 建立目的地應用程式 CR 檔案:

    1. 建立自訂資源(CR)檔案並將其命名為(例如、 my-app-name.yaml)。

    2. 設定下列屬性:

      • metadata.name:(必填)應用程式自訂資源的名稱。請記住您選擇的名稱,因為保護作業所需的其他 CR 檔案會參照此值。

      • spec.includedNamespaces:(必要)使用命名空間和標籤選擇器來指定應用程式使用的命名空間和資源。應用程式命名空間必須包含在此清單中。標籤選擇器是可選的,可用來篩選每個指定命名空間中的資源。

      • spec.includedClusterScopedResources:(選用)使用此屬性指定要包含在應用程式定義中的叢集範圍資源。此屬性可讓您根據資源的群組、版本、類型和標籤來選擇這些資源。

        • groupVersionKind:(必要)指定叢集範圍資源的 API 群組、版本和類型。

        • labelSelector:(可選)依照標籤篩選叢集範圍的資源。

    3. 如有需要,請設定下列註解:

      • metadata.annotations.protect.trident.netapp.io/skip-vm-freeze:(可選)此註解僅適用於從虛擬機器定義的應用程式,例如在 KubeVirt 環境中,檔案系統會在快照之前凍結。指定此應用程式在快照期間是否可以寫入檔案系統。如果設定為 true,則應用程式將忽略全域設定,並且可以在快照期間寫入檔案系統。如果設定為 false,則應用程式將忽略全域設定,並且檔案系統將在快照期間凍結。如果指定了此註解,但應用程式定義中沒有虛擬機器,則該註解將被忽略。如果未指定,則應用程式遵循 "全域檔案系統凍結設定"

      • protect.trident.netapp.io/protection-command:(選用)使用此註釋指示 Backup and Recovery 保護或停止保護應用程式。可能的值為 protect`或 `unprotect

      • protect.trident.netapp.io/protection-policy-name:(選用)使用此註解指定要用於保護此應用程式的 Backup and Recovery 保護原則名稱。此保護原則必須已存在於 Backup and Recovery 中。

如果需要在應用程式建立後套用此註解,可以使用以下命令:

kubectl annotate application -n <application CR namespace> <application CR name> protect.trident.netapp.io/skip-vm-freeze="true"

+
YAML 範例:

+

apiVersion: protect.trident.netapp.io/v1
kind: Application
metadata:
  annotations:
    protect.trident.netapp.io/skip-vm-freeze: "false"
    protect.trident.netapp.io/protection-command: "protect"
    protect.trident.netapp.io/protection-policy-name: "policy-name"
  name: my-app-name
  namespace: my-app-namespace
spec:
  includedNamespaces:
    - namespace: namespace-1
      labelSelector:
        matchLabels:
          app: example-app
    - namespace: namespace-2
      labelSelector:
        matchLabels:
          app: another-example-app
  includedClusterScopedResources:
    - groupVersionKind:
        group: rbac.authorization.k8s.io
        kind: ClusterRole
        version: v1
      labelSelector:
        matchLabels:
          mylabel: test
  1. (選用)新增篩選條件,包含或排除標記有特定標籤的資源:

    • 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"

          註 當兩者 resourceFilterlabelSelector 同時使用時, resourceFilter 首先運行,然後 labelSelector 將應用於生成的資源。

      例如:

    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"]
  2. 建立與您的環境相符的應用程式 CR 後、套用該 CR。例如:

    kubectl apply -f my-app-name.yaml