使用自定义资源还原 Kubernetes 应用程序
您可以使用自定义资源从快照或备份还原应用程序。将应用程序还原到同一集群时,从现有快照还原将更快。
|
|
|
将备份还原到其他命名空间
使用 BackupRestore CR 将备份还原到其他命名空间时,Backup and Recovery 会在新命名空间中还原应用程序,并为还原的应用程序创建应用程序 CR。要保护还原的应用程序,请创建按需备份或快照,或建立保护计划。
|
|
|
确保 AWS 会话令牌过期时间足以进行任何长期运行的 s3 还原操作。如果令牌在还原操作期间过期,则操作可能会失败。
-
有关检查当前会话令牌过期的详细信息,请参见 "AWS API 文档"。
-
有关 AWS 资源凭据的详细信息,请参见 "AWS IAM 文档"。
|
|
使用 Kopia 作为数据移动器还原备份时,可以选择在 CR 中指定注释,以控制 Kopia 使用的临时存储的行为。有关可以配置的选项的详细信息,请参见 "Kopia 文档"。 |
-
创建自定义资源 (CR) 文件并将其命名为
trident-protect-backup-restore-cr.yaml。 -
在创建的文件中,配置以下属性:
-
metadata.name:(Required)此自定义资源的名称;为您的环境选择一个唯一且合理的名称。
-
spec.appArchivePath:AppVault 中存储备份内容的路径。您可以使用以下命令查找此路径:
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}' -
spec.appVaultRef:(必需)存储备份内容的 AppVault 的名称。
-
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 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 操作进行匹配,并且每个元素(组、种类、版本)内的字段将作为 AND 操作进行匹配。
-
resourceMatchers[].group:(Optional)要筛选的资源的组。
-
resourceMatchers[].kind:(Optional)要筛选的资源的类型。
-
resourceMatchers[].version:(Optional)要筛选的资源的版本。
-
resourceMatchers[].names:(可选)要过滤的资源的 Kubernetes metadata.name 字段中的名称。
-
resourceMatchers[].namespaces: (Optional) 要过滤的资源的 Kubernetes metadata.name 字段中的命名空间。
-
resourceMatchers[].labelSelectors: (Optional) 资源的 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
将备份还原到原始命名空间
您可以随时将备份还原到原始命名空间。
确保 AWS 会话令牌过期时间足以进行任何长期运行的 s3 还原操作。如果令牌在还原操作期间过期,则操作可能会失败。
-
有关检查当前会话令牌过期的详细信息,请参见 "AWS API 文档"。
-
有关 AWS 资源凭据的详细信息,请参见 "AWS IAM 文档"。
|
|
使用 Kopia 作为数据移动器还原备份时,可以选择在 CR 中指定注释,以控制 Kopia 使用的临时存储的行为。有关可以配置的选项的详细信息,请参见 "Kopia 文档"。 |
-
创建自定义资源 (CR) 文件并将其命名为
trident-protect-backup-ipr-cr.yaml。 -
在创建的文件中,配置以下属性:
-
metadata.name:(Required)此自定义资源的名称;为您的环境选择一个唯一且合理的名称。
-
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 操作进行匹配,并且每个元素(组、种类、版本)内的字段将作为 AND 操作进行匹配。
-
resourceMatchers[].group:(Optional)要筛选的资源的组。
-
resourceMatchers[].kind:(Optional)要筛选的资源的类型。
-
resourceMatchers[].version:(Optional)要筛选的资源的版本。
-
resourceMatchers[].names:(可选)要过滤的资源的 Kubernetes metadata.name 字段中的名称。
-
resourceMatchers[].namespaces: (Optional) 要过滤的资源的 Kubernetes metadata.name 字段中的命名空间。
-
resourceMatchers[].labelSelectors: (Optional) 资源的 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
将备份还原到其他集群
如果原始群集出现问题,可以将备份还原到其他群集。
|
|
|
确保满足以下先决条件:
-
目标集群已安装 Trident Protect。
-
目标集群可以访问与源集群相同的 AppVault 存储桶路径,备份存储在该路径中。
-
确保 AWS 会话令牌过期时间足以进行任何长期运行的还原操作。如果令牌在还原操作期间过期,则操作可能会失败。
-
有关检查当前会话令牌过期的详细信息,请参见 "AWS API 文档"。
-
有关 AWS 资源凭据的详细信息,请参见 "AWS 文档"。
-
-
使用 Trident Protect CLI 插件检查目标集群上 AppVault CR 的可用性:
tridentctl-protect get appvault --context <destination_cluster_name>确保目标集群上存在用于应用程序还原的命名空间。 -
从目标集群查看可用的 AppVault 的备份内容:
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) 文件并将其命名为
trident-protect-backup-restore-cr.yaml。 -
在创建的文件中,配置以下属性:
-
metadata.name:(Required)此自定义资源的名称;为您的环境选择一个唯一且合理的名称。
-
spec.appVaultRef:(必需)存储备份内容的 AppVault 的名称。
-
spec.appArchivePath:AppVault 中存储备份内容的路径。您可以使用以下命令查找此路径:
kubectl get backups <BACKUP_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}'如果 BackupRestore CR 不可用,您可以使用步骤 2 中提到的命令查看备份内容。 -
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 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
将快照还原到其他命名空间
您可以使用自定义资源 (CR) 文件将数据从快照还原到不同的命名空间或原始源命名空间。使用 SnapshotRestore CR 将快照还原到其他命名空间时,Backup and Recovery 会在新的命名空间中还原应用程序,并为还原的应用程序创建应用程序 CR。要保护还原的应用程序,请创建按需备份或快照,或建立保护计划。
|
|
|
确保 AWS 会话令牌过期时间足以进行任何长期运行的 s3 还原操作。如果令牌在还原操作期间过期,则操作可能会失败。
-
有关检查当前会话令牌过期的详细信息,请参见 "AWS API 文档"。
-
有关 AWS 资源凭据的详细信息,请参见 "AWS IAM 文档"。
-
创建自定义资源 (CR) 文件并将其命名为
trident-protect-snapshot-restore-cr.yaml。 -
在创建的文件中,配置以下属性:
-
metadata.name:(Required)此自定义资源的名称;为您的环境选择一个唯一且合理的名称。
-
spec.appVaultRef:(必需)存储快照内容的 AppVault 的名称。
-
spec.appArchivePath:AppVault 中存储快照内容的路径。您可以使用以下命令查找此路径:
kubectl get snapshots <SNAPHOT_NAME> -n my-app-namespace -o jsonpath='{.status.appArchivePath}' -
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 操作进行匹配,并且每个元素(组、种类、版本)内的字段将作为 AND 操作进行匹配。
-
resourceMatchers[].group:(Optional)要筛选的资源的组。
-
resourceMatchers[].kind:(Optional)要筛选的资源的类型。
-
resourceMatchers[].version:(Optional)要筛选的资源的版本。
-
resourceMatchers[].names:(可选)要过滤的资源的 Kubernetes metadata.name 字段中的名称。
-
resourceMatchers[].namespaces: (Optional) 要过滤的资源的 Kubernetes metadata.name 字段中的命名空间。
-
resourceMatchers[].labelSelectors: (Optional) 资源的 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
将快照还原到原始命名空间
您可以随时将快照还原到原始命名空间。
确保 AWS 会话令牌过期时间足以进行任何长期运行的 s3 还原操作。如果令牌在还原操作期间过期,则操作可能会失败。
-
有关检查当前会话令牌过期的详细信息,请参见 "AWS API 文档"。
-
有关 AWS 资源凭据的详细信息,请参见 "AWS IAM 文档"。
-
创建自定义资源 (CR) 文件并将其命名为
trident-protect-snapshot-ipr-cr.yaml。 -
在创建的文件中,配置以下属性:
-
metadata.name:(Required)此自定义资源的名称;为您的环境选择一个唯一且合理的名称。
-
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 操作进行匹配,并且每个元素(组、种类、版本)内的字段将作为 AND 操作进行匹配。
-
resourceMatchers[].group:(Optional)要筛选的资源的组。
-
resourceMatchers[].kind:(Optional)要筛选的资源的类型。
-
resourceMatchers[].version:(Optional)要筛选的资源的版本。
-
resourceMatchers[].names:(可选)要过滤的资源的 Kubernetes metadata.name 字段中的名称。
-
resourceMatchers[].namespaces: (Optional) 要过滤的资源的 Kubernetes metadata.name 字段中的命名空间。
-
resourceMatchers[].labelSelectors: (Optional) 资源的 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