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

还原应用程序

贡献者

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

开始之前
  • 首先保护您的应用程序:强烈建议您在恢复应用程序之前为其创建快照或备份。这样、如果还原失败、您就可以从快照或备份克隆。

  • 检查目标卷:如果要还原到其他存储类、请确保该存储类使用相同的永久性卷访问模式(例如ReadWriteMany)。如果目标永久性卷访问模式不同,还原操作将失败。例如、如果源永久性卷使用rwx访问模式、请选择无法提供rwx的目标存储类、例如Azure托管磁盘、AWS EBS、Google持久磁盘或 ontap-san,发生原因则还原操作是否会失败。有关永久性卷访问模式的详细信息、请参阅 "Kubernetes" 文档。

  • 规划空间需求:对使用NetApp ONTAP 存储的应用程序执行原位还原时、还原的应用程序使用的空间可能会增加一倍。执行原位还原后、从还原的应用程序中删除所有不需要的快照以释放存储空间。

  • (仅限Red Hat OpenShift集群)添加策略:创建用于在OpenShift集群上托管应用程序的项目时、系统会为该项目(或Kubernetes命名空间)分配SecurityContext UID。要使 Astra 控制中心能够保护您的应用程序并将应用程序移动到 OpenShift 中的其他集群或项目,您需要添加策略,使应用程序能够作为任何 UID 运行。例如,以下 OpenShift 命令行界面命令会为 WordPress 应用程序授予相应的策略。

    oc new-project WordPress oc adm policy add-SCS-to-group anyuid system : serviceaccounts : WordPress oc adm policy add-SCS-to-user privileged -z default -n WordPress

  • 支持的存储类驱动程序:Astra Control支持使用以下驱动程序支持的存储类还原备份:

    • ontap-nas

    • ontap-nas-economy

    • ontap-san

    • ontap-san-economy

  • (仅限ONTA-NAS经济型驱动程序)备份和还原:备份或还原使用由备份的存储类的应用程序之前 ontap-nas-economy 驱动程序、请验证 "ONTAP存储后端上的Snapshot目录处于隐藏状态"。如果未能隐藏此目录、可能会导致无法访问您的应用程序、尤其是在使用NFSv3的情况下。

  • * Helm部署的应用程序*:完全支持使用Helm 3部署的应用程序(或从Helm 2升级到Helm 3)。不支持使用 Helm 2 部署的应用程序。

注意

在与其他应用程序共享资源的应用程序上执行原位还原操作可能会产生意外结果。对其中一个应用程序执行原位还原时、这些应用程序之间共享的任何资源都会被替换。有关详细信息,请参见 此示例

根据要还原的归档类型、执行以下步骤:

使用Web UI从备份或快照还原数据

您可以使用Asta Control Web UI还原数据。

步骤
  1. 选择 * 应用程序 * ,然后选择应用程序的名称。

  2. 从“操作”列的“选项”菜单中,选择*Restore*。

  3. 选择还原类型:

    • 还原到原始命名空间:使用此操作步骤 将应用程序原位还原到原始集群。

      备注 如果您的应用使用由支持的存储类 ontap-nas-economy 驱动程序、则必须使用原始存储类还原应用程序。如果要将应用程序还原到同一命名空间、则不能指定其他存储类。
      1. 选择要用于原位还原应用程序的快照或备份、这会将应用程序还原到其自身的早期版本。

      2. 选择 * 下一步 * 。

        备注 如果还原到先前已删除的命名空间、则在还原过程中会创建一个同名的新命名空间。任何有权管理先前删除的命名空间中的应用程序的用户都需要手动还原对新重新创建的命名空间的权限。
    • 还原到新命名空间:使用此操作步骤 将应用程序还原到另一个集群或使用与源不同的命名空间。

      1. 指定已还原应用程序的名称。

      2. 为要还原的应用程序选择目标集群。

      3. 为与应用程序关联的每个源命名空间输入目标命名空间。

        备注 作为此还原选项的一部分、Astra Control会创建新的目标命名空间。指定的目标命名空间不能已存在于目标集群上。
      4. 选择 * 下一步 * 。

      5. 选择用于还原应用程序的快照或备份。

      6. 选择 * 下一步 * 。

      7. 选择以下选项之一:

        • 使用原始存储类还原:除非目标集群上不存在、否则应用程序将使用最初关联的存储类。在这种情况下、将使用集群的默认存储类。

        • 使用其他存储类还原:选择目标集群上的存储类。在还原过程中、所有应用程序卷(无论其最初关联的存储类是什么)都将迁移到此不同的存储类。

      8. 选择 * 下一步 * 。

  4. 选择要筛选的任何资源:

    • 恢复所有资源:恢复与原始应用程序关联的所有资源。

    • 过滤资源:指定规则以还原原始应用程序资源的子集:

      1. 选择在已还原的应用程序中包括或排除资源。

      2. 选择*添加包含规则*或*添加排除规则*,并配置规则以在应用程序恢复期间过滤正确的资源。您可以编辑或删除规则、然后重新创建规则、直到配置正确为止。

        备注 要了解有关配置包含和排除规则的信息、请参见 在应用程序还原期间筛选资源
  5. 选择 * 下一步 * 。

  6. 请仔细查看有关还原操作的详细信息,键入“restore”(如果出现提示),然后选择*Restore*。

[技术预览]使用自定义资源从备份中恢复(CR)

您可以使用自定义资源(CR)文件将备份中的数据还原到其他命名空间或原始源命名空间。

使用CR从备份还原
步骤
  1. 创建自定义资源(CR)文件并将其命名为 astra-control-backup-restore-cr.yaml。更新方括号<>中的值以匹配您的Astra Control环境和集群配置:

    • <CR_NAME>:此CR操作的名称;为您的环境选择一个合理的名称。

    • <APPVAULT_NAME>:存储备份内容的AppVault的名称。

    • <BACKUP_PATH>:AppVault中存储备份内容的路径。例如:

      ONTAP-S3_1343ff5e-4c41-46b5-af00/backups/schedule-20231213023800_94347756-9d9b-401d-a0c3
    • <SOURCE_NAMESPACE>:还原操作的源命名空间。

    • <DESTINATION_NAMESPACE>:还原操作的目标命名空间。

      apiVersion: astra.netapp.io/v1
      kind: BackupRestore
      metadata:
        name: <CR_NAME>
        namespace: astra-connector
      spec:
        appVaultRef: <APPVAULT_NAME>
        appArchivePath: <BACKUP_PATH>
        namespaceMapping: [{"source": "<SOURCE_NAMESPACE>", "destination": "<DESTINATION_NAMESPACE>"}]
  2. (可选)如果只需要选择要还原的应用程序的某些资源、请添加筛选功能、其中包括或排除标记有特定标签的资源:

    • <INCLUDE-EXCLUDE>:_(筛选所需)_使用 includeexclude 包括或排除资源匹配备程序中定义的资源。添加以下resourceMatchers参数以定义要包括或排除的资源:

      • <GROUP>:_(可选)_要筛选的资源组。

      • <KIND>:_(可选)_要筛选的资源种类。

      • <VERSION>:要筛选的资源的_(可选)_版本。

      • <NAMES>:要筛选的资源的Kubenetes metadata.name字段中的_(可选)_个名称。

      • <NAMESPACES>:_(可选)_要筛选的资源的Kubenetes metadata.name字段中的命名区。

      • <SELECTORS>:中定义的资源的Kubelnetes metadata.name字段中的_(可选)_标签选择器字符串 "Kubernetes 文档"。示例 "trident.netapp.io/os=linux"

        示例

    spec:
        resourceFilter:
            resourceSelectionCriteria: "<INCLUDE-EXCLUDE>"
            resourceMatchers:
               group: <GROUP>
               kind: <KIND>
               version: <VERSION>
               names: <NAMES>
               namespaces: <NAMESPACES>
               labelSelectors: <SELECTORS>
  3. 在您填充之后 astra-control-backup-restore-cr.yaml 使用正确值的文件、应用CR:

    kubectl apply -f astra-control-backup-restore-cr.yaml
使用CR从备份还原到原始命名空间
步骤
  1. 创建自定义资源(CR)文件并将其命名为 astra-control-backup-ipr-cr.yaml。更新方括号<>中的值以匹配您的Astra Control环境和集群配置:

    • <CR_NAME>:此CR操作的名称;为您的环境选择一个合理的名称。

    • <APPVAULT_NAME>:存储备份内容的AppVault的名称。

    • <BACKUP_PATH>:AppVault中存储备份内容的路径。例如:

      ONTAP-S3_1343ff5e-4c41-46b5-af00/backups/schedule-20231213023800_94347756-9d9b-401d-a0c3
      apiVersion: astra.netapp.io/v1
      kind: BackupInplaceRestore
      metadata:
        name: <CR_NAME>
        namespace: astra-connector
      spec:
        appVaultRef: <APPVAULT_NAME>
        appArchivePath: <BACKUP_PATH>
  2. (可选)如果只需要选择要还原的应用程序的某些资源、请添加筛选功能、其中包括或排除标记有特定标签的资源:

    • <INCLUDE-EXCLUDE>:_(筛选所需)_使用 includeexclude 包括或排除资源匹配备程序中定义的资源。添加以下resourceMatchers参数以定义要包括或排除的资源:

      • <GROUP>:_(可选)_要筛选的资源组。

      • <KIND>:_(可选)_要筛选的资源种类。

      • <VERSION>:要筛选的资源的_(可选)_版本。

      • <NAMES>:要筛选的资源的Kubenetes metadata.name字段中的_(可选)_个名称。

      • <NAMESPACES>:_(可选)_要筛选的资源的Kubenetes metadata.name字段中的命名区。

      • <SELECTORS>:中定义的资源的Kubelnetes metadata.name字段中的_(可选)_标签选择器字符串 "Kubernetes 文档"。示例 "trident.netapp.io/os=linux"

        示例

    spec:
        resourceFilter:
            resourceSelectionCriteria: "<INCLUDE-EXCLUDE>"
            resourceMatchers:
               group: <GROUP>
               kind: <KIND>
               version: <VERSION>
               names: <NAMES>
               namespaces: <NAMESPACES>
               labelSelectors: <SELECTORS>
  3. 在您填充之后 astra-control-backup-ipr-cr.yaml 使用正确值的文件、应用CR:

    kubectl apply -f astra-control-backup-ipr-cr.yaml

[技术预览]使用自定义资源从快照恢复(CR)

您可以使用自定义资源(CR)文件从快照将数据还原到其他命名空间或原始源命名空间。

使用CR从快照还原
步骤
  1. 创建自定义资源(CR)文件并将其命名为 astra-control-snapshot-restore-cr.yaml。更新方括号<>中的值以匹配您的Astra Control环境和集群配置:

    • <CR_NAME>:此CR操作的名称;为您的环境选择一个合理的名称。

    • <APPVAULT_NAME>:存储备份内容的AppVault的名称。

    • <BACKUP_PATH>:AppVault中存储备份内容的路径。例如:

      ONTAP-S3_1343ff5e-4c41-46b5-af00/backups/schedule-20231213023800_94347756-9d9b-401d-a0c3
    • <SOURCE_NAMESPACE>:还原操作的源命名空间。

    • <DESTINATION_NAMESPACE>:还原操作的目标命名空间。

      apiVersion: astra.netapp.io/v1
      kind: SnapshotRestore
      metadata:
        name: <CR_NAME>
        namespace: astra-connector
      spec:
        appArchivePath: <BACKUP_PATH>
        appVaultRef: <APPVAULT_NAME>
        namespaceMapping: [{"source": "<SOURCE_NAMESPACE>", "destination": "<DESTINATION_NAMESPACE>"}]
  2. (可选)如果只需要选择要还原的应用程序的某些资源、请添加筛选功能、其中包括或排除标记有特定标签的资源:

    • <INCLUDE-EXCLUDE>:_(筛选所需)_使用 includeexclude 包括或排除资源匹配备程序中定义的资源。添加以下resourceMatchers参数以定义要包括或排除的资源:

      • <GROUP>:_(可选)_要筛选的资源组。

      • <KIND>:_(可选)_要筛选的资源种类。

      • <VERSION>:要筛选的资源的_(可选)_版本。

      • <NAMES>:要筛选的资源的Kubenetes metadata.name字段中的_(可选)_个名称。

      • <NAMESPACES>:_(可选)_要筛选的资源的Kubenetes metadata.name字段中的命名区。

      • <SELECTORS>:中定义的资源的Kubelnetes metadata.name字段中的_(可选)_标签选择器字符串 "Kubernetes 文档"。示例 "trident.netapp.io/os=linux"

        示例

    spec:
        resourceFilter:
            resourceSelectionCriteria: "<INCLUDE-EXCLUDE>"
            resourceMatchers:
               group: <GROUP>
               kind: <KIND>
               version: <VERSION>
               names: <NAMES>
               namespaces: <NAMESPACES>
               labelSelectors: <SELECTORS>
  3. 在您填充之后 astra-control-snapshot-restore-cr.yaml 使用正确值的文件、应用CR:

    kubectl apply -f astra-control-snapshot-restore-cr.yaml
使用CR从快照还原到原始命名空间
步骤
  1. 创建自定义资源(CR)文件并将其命名为 astra-control-snapshot-ipr-cr.yaml。更新方括号<>中的值以匹配您的Astra Control环境和集群配置:

    • <CR_NAME>:此CR操作的名称;为您的环境选择一个合理的名称。

    • <APPVAULT_NAME>:存储备份内容的AppVault的名称。

    • <BACKUP_PATH>:AppVault中存储备份内容的路径。例如:

      ONTAP-S3_1343ff5e-4c41-46b5-af00/backups/schedule-20231213023800_94347756-9d9b-401d-a0c3
      apiVersion: astra.netapp.io/v1
      kind: SnapshotInplaceRestore
      metadata:
        name: <CR_NAME>
        namespace: astra-connector
      spec:
        appArchivePath: <BACKUP_PATH>
        appVaultRef: <APPVAULT_NAME>
  2. (可选)如果只需要选择要还原的应用程序的某些资源、请添加筛选功能、其中包括或排除标记有特定标签的资源:

    • <INCLUDE-EXCLUDE>:_(筛选所需)_使用 includeexclude 包括或排除资源匹配备程序中定义的资源。添加以下resourceMatchers参数以定义要包括或排除的资源:

      • <GROUP>:_(可选)_要筛选的资源组。

      • <KIND>:_(可选)_要筛选的资源种类。

      • <VERSION>:要筛选的资源的_(可选)_版本。

      • <NAMES>:要筛选的资源的Kubenetes metadata.name字段中的_(可选)_个名称。

      • <NAMESPACES>:_(可选)_要筛选的资源的Kubenetes metadata.name字段中的命名区。

      • <SELECTORS>:中定义的资源的Kubelnetes metadata.name字段中的_(可选)_标签选择器字符串 "Kubernetes 文档"。示例 "trident.netapp.io/os=linux"

        示例

    spec:
        resourceFilter:
            resourceSelectionCriteria: "<INCLUDE-EXCLUDE>"
            resourceMatchers:
               group: <GROUP>
               kind: <KIND>
               version: <VERSION>
               names: <NAMES>
               namespaces: <NAMESPACES>
               labelSelectors: <SELECTORS>
  3. 在您填充之后 astra-control-snapshot-ipr-cr.yaml 使用正确值的文件、应用CR:

    kubectl apply -f astra-control-snapshot-ipr-cr.yaml
结果

Astra Control 会根据您提供的信息还原应用程序。如果您已原位还原应用程序、则现有永久性卷的内容将替换为已还原应用程序中的永久性卷的内容。

备注 在执行数据保护操作(克隆、备份或还原)并随后调整永久性卷大小后、在Web UI中显示新卷大小之前、最多会有20分钟的延迟。数据保护操作将在几分钟内成功完成,您可以使用存储后端的管理软件确认卷大小的更改。
重要说明 任何按命名空间名称/ID或命名空间标签限制命名空间的成员用户都可以将应用程序克隆或还原到同一集群上的新命名空间或其组织帐户中的任何其他集群。但是,同一用户无法访问新命名空间中的克隆或还原应用程序。克隆或还原操作创建新命名空间后、帐户管理员/所有者可以编辑成员用户帐户并更新受影响用户的角色约束、以授予对新命名空间的访问权限。

在应用程序还原期间筛选资源

您可以向添加筛选器规则 "还原" 此操作将指定要从还原的应用程序中包括或排除的现有应用程序资源。您可以根据指定的命名空间、标签或GVK (GroupVersion Kind)包括或排除资源。

展开以了解有关包括和排除方案的更多信息
  • 选择包含原始命名空间的规则(就地还原):您在规则中定义的现有应用程序资源将被删除,并替换为用于还原的选定快照或备份中的应用程序资源。未在包含规则中指定的任何资源将保持不变。

  • 选择包含新名称空间的规则:使用此规则在还原的应用程序中选择所需的特定资源。未在包含规则中指定的任何资源将不会包含在已还原的应用程序中。

  • 选择包含原始名称空间的排除规则(就地恢复):您指定要排除的资源将不会还原、并且保持不变。未指定排除的资源将从快照或备份中还原。如果筛选的资源中包含相应的状态集、则永久性卷上的所有数据都将被删除并重新创建。

  • 选择包含新名称空间的排除规则:使用此规则可选择要从还原的应用程序中删除的特定资源。未指定排除的资源将从快照或备份中还原。

规则可以是包含类型、也可以是排除类型。不提供组合使用资源包含和排除的规则。

步骤
  1. 选择筛选资源并在恢复应用程序向导中选择包含或排除选项后,选择*添加包含规则*或*添加排除规则*。

    备注 您不能排除Asta Control自动包含的任何集群范围的资源。
  2. 配置筛选器规则:

    备注 必须至少指定一个命名空间、标签或GVK。确保在应用筛选器规则后保留的任何资源足以使已还原的应用程序保持运行状况良好。
    1. 为规则选择特定命名空间。如果不进行选择、则会在筛选器中使用所有名称空间。

      备注 如果您的应用程序最初包含多个名称空间、而您将其还原到新的名称空间、则会创建所有名称空间、即使它们不包含资源也是如此。
    2. (可选)输入资源名称。

    3. (可选)标签选择器:包括A "标签选择器" 以添加到规则中。标签选择器用于仅筛选与选定标签匹配的资源。

    4. (可选)选择*使用GVK (GroupVersion Kind)设置来筛选资源*以获取其他筛选选项。

      备注 如果使用GVK筛选器、则必须指定版本和种类。
      1. (可选):从下拉列表中选择Kubernetes API组。

      2. KND:从下拉列表中选择要在筛选器中使用的Kubernetes资源类型的对象模式。

      3. 版本:选择Kubernetes API版本。

  3. 查看根据条目创建的规则。

  4. 选择 * 添加 * 。

    提示 您可以根据需要创建任意数量的资源包含和排除规则。这些规则将显示在启动操作之前的还原应用程序摘要中。

如果某个应用程序与其他应用程序共享资源、则就地恢复会变得非常复杂

您可以对与其他应用共享资源并产生意外结果的应用程序执行原位还原操作。对其中一个应用程序执行原位还原时、这些应用程序之间共享的任何资源都会被替换。

以下示例情形会在使用NetApp SnapMirror复制进行还原时产生不希望出现的情况:

  1. 您可以定义应用程序 app1 使用命名空间 ns1

  2. 您可以为配置复制关系 app1

  3. 您可以定义应用程序 app2 (在同一集群上)使用命名空间 ns1ns2

  4. 您可以为配置复制关系 app2

  5. 反向复制 app2。这将导致 app1 要停用的源集群上的应用程序。