Skip to main content
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

还原应用程序

贡献者

您可以使用Trident Protect从快照或备份还原应用程序。将应用程序还原到同一集群时,从现有快照进行还原的速度会更快。

备注 还原应用程序时、为该应用程序配置的所有执行挂钩都会随该应用程序还原。如果存在还原后执行挂钩、则它会在还原操作中自动运行。

从备份还原到其他命名空间

使用BackupRestore CR将备份还原到其他命名空间时、Trident Protect会将应用程序还原到新命名空间中、但还原后的应用程序不会自动受Trident Protect保护。要保护已还原的应用程序、您需要为已还原的应用程序创建应用程序CR、以使其受到Trident Protect的保护。

备注 将备份还原到具有现有资源的其他命名空间不会更改与备份中的资源共享名称的任何资源。要还原备份中的所有资源、请删除并重新创建目标命名空间、或者将备份还原到新命名空间。
使用CR
  1. 创建自定义资源(CR)文件并将其命名为 trident-protect-backup-restore-cr.yaml

  2. 在创建的文件中、配置以下属性:

    • 。metadata.name:(required_)此自定义资源的名称;请为您的环境选择一个唯一且合理的名称。

    • spec.appArchivePath:AppVault中存储备份内容的路径。您可以使用以下命令查找此路径:

      kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
    • spec.appVaultRef:(required)存储备份内容的AppVault的名称。

    • 。spec.namespaceMapping:还原操作的源命名空间到目标命名空间的映射。将和 `my-destination-namespace`替换 `my-source-namespace`为您环境中的信息。

    • spec.storageClassMapping:还原操作的源存储类到目标存储类的映射。将和 `sourceStorageClass`替换 `destinationStorageClass`为您环境中的信息。

      apiVersion: protect.trident.netapp.io/v1o
      kind: BackupRestore
      metadata:
        name: my-cr-name
        namespace: my-app-namespace
      spec:
        appArchivePath: my-backup-path
        appVaultRef: appvault-name
        namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}]
        storageClassMapping:
          destination: "${destinationStorageClass}"
          source: "${sourceStorageClass}"
  3. (可 选)如果只需要选择要还原的应用程序的某些资源、请添加包含或排除带有特定标签的资源的筛选:

    • resourceFilter.resourceSourcesionCriteri:(筛选时需要) `include or exclude`用于包含或排除在resourceMatchers中定义的资源。添加以下resourceMatchers参数以定义要包括或排除的资源:

      • resourceFilter.resourceMatcher:resourceMatcher对象数组。

        • resourceMatcher[].group:(可 选)要筛选的资源的组。

        • resourceMatcher[].KIND:(可 选)要筛选的资源种类。

        • resourceMatcher[].version:(可 选)要筛选的资源版本。

        • resourceMatcher[].names:(可 选)要筛选的资源的Kubernetes metadata.name字段中的名称。

        • resourceMatcher[].namespies:(可 选)要筛选的资源的Kubernetes metadata.name字段中的命名空间。

        • *resourceMatcher[].labelSelectors *:(可 选)资源的Kubernetes metadata.name字段中的标签选择器字符串,如中所定义 "Kubernetes 文档"。例如: "trident.netapp.io/os=linux"

          例如:

    spec:
      resourceFilter:
        resourceSelectionCriteria: "include"
        resourceMatchers:
          group: my-resource-group
          kind: my-resource-kind
          version: my-resource-version
          names: ["my-resource-names"]
          namespaces: ["my-resource-namespaces"]
          labelSelectors: ["trident.netapp.io/os=linux"]
  4. 使用正确的值填充文件后 trident-protect-backup-restore-cr.yaml 、应用CR:

    kubectl apply -f trident-protect-backup-restore-cr.yaml
使用命令行界面
  1. 将备份还原到其他命名空间、将括号中的值替换为环境中的信息。此 `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>

从备份还原到原始命名空间

您可以随时将备份还原到原始命名空间。

使用CR
  1. 创建自定义资源(CR)文件并将其命名为 trident-protect-backup-ipr-cr.yaml

  2. 在创建的文件中、配置以下属性:

    • 。metadata.name:(required_)此自定义资源的名称;请为您的环境选择一个唯一且合理的名称。

    • spec.appArchivePath:AppVault中存储备份内容的路径。您可以使用以下命令查找此路径:

      kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
    • spec.appVaultRef:(required)存储备份内容的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
  3. (可 选)如果只需要选择要还原的应用程序的某些资源、请添加包含或排除带有特定标签的资源的筛选:

    • resourceFilter.resourceSourcesionCriteri:(筛选时需要) `include or exclude`用于包含或排除在resourceMatchers中定义的资源。添加以下resourceMatchers参数以定义要包括或排除的资源:

      • resourceFilter.resourceMatcher:resourceMatcher对象数组。

        • resourceMatcher[].group:(可 选)要筛选的资源的组。

        • resourceMatcher[].KIND:(可 选)要筛选的资源种类。

        • resourceMatcher[].version:(可 选)要筛选的资源版本。

        • resourceMatcher[].names:(可 选)要筛选的资源的Kubernetes metadata.name字段中的名称。

        • resourceMatcher[].namespies:(可 选)要筛选的资源的Kubernetes metadata.name字段中的命名空间。

        • *resourceMatcher[].labelSelectors *:(可 选)资源的Kubernetes metadata.name字段中的标签选择器字符串,如中所定义 "Kubernetes 文档"。例如: "trident.netapp.io/os=linux"

          例如:

    spec:
      resourceFilter:
        resourceSelectionCriteria: "include"
        resourceMatchers:
          group: my-resource-group
          kind: my-resource-kind
          version: my-resource-version
          names: ["my-resource-names"]
          namespaces: ["my-resource-namespaces"]
          labelSelectors: ["trident.netapp.io/os=linux"]
  4. 使用正确的值填充文件后 trident-protect-backup-ipr-cr.yaml 、应用CR:

    kubectl apply -f trident-protect-backup-ipr-cr.yaml
使用命令行界面
  1. 将备份还原到原始命名空间、将括号中的值替换为环境中的信息。 backup`参数使用格式为的命名空间和备份名称 `<namespace>/<name>。例如:

    tridentctl protect create backupinplacerestore <my_restore_name> --backup <namespace/backup_to_restore>

从快照还原到其他命名空间

您可以使用自定义资源(CR)文件从快照将数据还原到其他命名空间或原始源命名空间。使用SnapshotRestore CR将快照还原到其他命名空间时、Trident Protect会将应用程序还原到新命名空间中、但还原后的应用程序不会自动受Trident Protect保护。要保护已还原的应用程序、您需要为已还原的应用程序创建应用程序CR、以使其受到Trident Protect的保护。

使用CR
  1. 创建自定义资源(CR)文件并将其命名为 trident-protect-snapshot-restore-cr.yaml

  2. 在创建的文件中、配置以下属性:

    • 。metadata.name:(required_)此自定义资源的名称;请为您的环境选择一个唯一且合理的名称。

    • spec.appVaultRef:(required)存储快照内容的AppVault的名称。

    • spec.appArchivePath:AppVault中存储快照内容的路径。您可以使用以下命令查找此路径:

      kubectl get snapshots <SNAPHOT_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'
    • 。spec.namespaceMapping:还原操作的源命名空间到目标命名空间的映射。将和 `my-destination-namespace`替换 `my-source-namespace`为您环境中的信息。

    • spec.storageClassMapping:还原操作的源存储类到目标存储类的映射。将和 `sourceStorageClass`替换 `destinationStorageClass`为您环境中的信息。

      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"}]
        storageClassMapping:
          destination: "${destinationStorageClass}"
          source: "${sourceStorageClass}"
  3. (可 选)如果只需要选择要还原的应用程序的某些资源、请添加包含或排除带有特定标签的资源的筛选:

    • resourceFilter.resourceSourcesionCriteri:(筛选时需要) `include or exclude`用于包含或排除在resourceMatchers中定义的资源。添加以下resourceMatchers参数以定义要包括或排除的资源:

      • resourceFilter.resourceMatcher:resourceMatcher对象数组。

        • resourceMatcher[].group:(可 选)要筛选的资源的组。

        • resourceMatcher[].KIND:(可 选)要筛选的资源种类。

        • resourceMatcher[].version:(可 选)要筛选的资源版本。

        • resourceMatcher[].names:(可 选)要筛选的资源的Kubernetes metadata.name字段中的名称。

        • resourceMatcher[].namespies:(可 选)要筛选的资源的Kubernetes metadata.name字段中的命名空间。

        • *resourceMatcher[].labelSelectors *:(可 选)资源的Kubernetes metadata.name字段中的标签选择器字符串,如中所定义 "Kubernetes 文档"。例如: "trident.netapp.io/os=linux"

          例如:

    spec:
      resourceFilter:
        resourceSelectionCriteria: "include"
        resourceMatchers:
          group: my-resource-group
          kind: my-resource-kind
          version: my-resource-version
          names: ["my-resource-names"]
          namespaces: ["my-resource-namespaces"]
          labelSelectors: ["trident.netapp.io/os=linux"]
  4. 使用正确的值填充文件后 trident-protect-snapshot-restore-cr.yaml 、应用CR:

    kubectl apply -f trident-protect-snapshot-restore-cr.yaml
使用命令行界面
  1. 将快照还原到其他命名空间、将括号中的值替换为环境中的信息。

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

从快照还原到原始命名空间

您可以随时将快照还原到原始命名空间。

使用CR
  1. 创建自定义资源(CR)文件并将其命名为 trident-protect-snapshot-ipr-cr.yaml

  2. 在创建的文件中、配置以下属性:

    • 。metadata.name:(required_)此自定义资源的名称;请为您的环境选择一个唯一且合理的名称。

    • spec.appVaultRef:(required)存储快照内容的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
  3. (可 选)如果只需要选择要还原的应用程序的某些资源、请添加包含或排除带有特定标签的资源的筛选:

    • resourceFilter.resourceSourcesionCriteri:(筛选时需要) `include or exclude`用于包含或排除在resourceMatchers中定义的资源。添加以下resourceMatchers参数以定义要包括或排除的资源:

      • resourceFilter.resourceMatcher:resourceMatcher对象数组。

        • resourceMatcher[].group:(可 选)要筛选的资源的组。

        • resourceMatcher[].KIND:(可 选)要筛选的资源种类。

        • resourceMatcher[].version:(可 选)要筛选的资源版本。

        • resourceMatcher[].names:(可 选)要筛选的资源的Kubernetes metadata.name字段中的名称。

        • resourceMatcher[].namespies:(可 选)要筛选的资源的Kubernetes metadata.name字段中的命名空间。

        • *resourceMatcher[].labelSelectors *:(可 选)资源的Kubernetes metadata.name字段中的标签选择器字符串,如中所定义 "Kubernetes 文档"。例如: "trident.netapp.io/os=linux"

          例如:

    spec:
      resourceFilter:
        resourceSelectionCriteria: "include"
        resourceMatchers:
          group: my-resource-group
          kind: my-resource-kind
          version: my-resource-version
          names: ["my-resource-names"]
          namespaces: ["my-resource-namespaces"]
          labelSelectors: ["trident.netapp.io/os=linux"]
  4. 使用正确的值填充文件后 trident-protect-snapshot-ipr-cr.yaml 、应用CR:

    kubectl apply -f trident-protect-snapshot-ipr-cr.yaml
使用命令行界面
  1. 将快照还原到原始命名空间、将括号中的值替换为环境中的信息。例如:

    tridentctl protect create snapshotinplacerestore <my_restore_name> --snapshot <snapshot_to_restore>

检查还原操作的状态

您可以使用命令行检查正在进行、已完成或失败的还原操作的状态。

步骤
  1. 使用以下命令检索还原操作的状态、将括号中的值替换为环境中的信息:

    kubectl get backuprestore -n <namespace_name> <my_restore_cr_name> -o jsonpath='{.status}'