如何将GKE集群的GKE备份从一个项目恢复到另一个项目的GKE集群?

How to restore GKE backup of a GKE Cluster from one project to another project's GKE cluster?

提问人:devops-admin 提问时间:11/15/2023 最后编辑:devops-admin 更新时间:11/22/2023 访问量:202

问:

如何将GKE集群的GKE备份从一个项目恢复到另一个项目的GKE集群?

我需要将一个项目的 GKE 集群的 gke 备份移动到另一个项目的 GKE 集群中。

  1. 我在源项目中创建了一个备份计划和一个备份。

  2. 我还通过下面的云 CLI 命令成功地将 restore-plan 创建到目标项目中,引用源项目 backup-plan 和目标项目的 gke 集群。

gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
    --project=PROJECT_ID \
    --location=LOCATION \
    --backup-plan=projects/PROJECT_ID/locations/BACKUP_LOCATION/backupPlans/BACKUP_PLAN_NAME  \
    --cluster=CLUSTER \
    --namespaced-resource-restore-mode=NAMESPACED_RESOURCE_RESTORE_MODE \
    --all-namespaces \
    --cluster-resource-conflict-policy=CLUSTER_RESOURCE_CONFLICT_POLICY \
    --cluster-resource-scope-selected-group-kinds=CLUSTER_RESOURCE_SCOPE \
    --volume-data-restore-policy=VOLUME_DATA_RESTORE_POLICY
  1. 当我们尝试使用步骤 2 的 restore-plan 将备份从源项目的 GKE 备份还原到目标项目的 GKE 集群时,我们收到以下错误消息。
gcloud beta container backup-restore restores create RESTORE \
    --project=PROJECT_ID \
    --location=LOCATION \
    --restore-plan=RESTORE_PLAN \
    --backup=projects/PROJECT_ID/locations/LOCATION/backupPlans/BACKUP_PLAN/backups/BACKUP

## Output
Restore execution
Status  Failed  
Status reason   googleapi: Error 403: Permission 'gkebackup.backups.execute' denied on 'projects/67114541833/locations/asia-south1/backupPlans/staging-cluster-backup-1/backups/stg-backup23', forbidden

我们已将以下权限添加到源项目的 GKE 集群服务帐户中

# [email protected]

Backup for GKE Admin
Backup for GKE Backup Admin
Kubernetes Engine Service Agent

我们已将上述相同的权限添加到源项目的 GKE 备份服务帐户中

#[email protected]

Backup for GKE Admin
Backup for GKE Backup Admin
Kubernetes Engine Service Agent

我们已将上述相同的权限添加到目标项目的 GKE Cluster 服务帐户中

# [email protected]

Backup for GKE Admin
Backup for GKE Backup Admin
Kubernetes Engine Service Agent

我们已将上述相同的权限添加到目标项目的 GKE 备份服务帐户中

#[email protected]

Backup for GKE Admin
Backup for GKE Backup Admin
Kubernetes Engine Service Agent

可以做些什么来解决这个问题? 要实现此方案,需要向两个项目中的服务帐户添加哪些额外权限?

google-cloud-platform google-kubernetes-engine 备份

评论


答:

0赞 Hemanth Kumar 11/15/2023 #1
  1. 也许您没有为目标 GKE 分配适当的 IAM 角色 用于访问源 GKE 集群的集群服务帐号 备份,这就是您收到禁止错误消息的原因 在还原操作期间。请参阅所需的 IAM 角色 备份/还原。 您将所有三个权限授予源和目标 项目尝试如下:
  • 要解决此问题,您需要将适当的 IAM 角色分配给 特殊服务帐户 Kubernetes Engine Service Agent ([电子邮件保护]) 从目标项目(要还原的位置)。
  • IAM 角色(可以是 Backup for GKE Admin)应分配在 源项目(带有 GKE 备份的项目)到上述 服务帐户 ([电子邮件保护])
  1. 您能否检查是否已启用 GKE 备份 在为任何 GKE 设置备份和恢复之前,在项目中提供服务 该项目中的集群。您可以启用 Backup for GKE 服务 通过使用 Google Cloud CLI 或 Google Cloud 控制台。
To enable the Backup for GKE service, run the following command:
   `gcloud services enable gkebackup.googleapis.com`

编辑 : @devops-admin : 经过如此多的分析并彻底解决了这个问题,我想通知您,无法将 GKE 备份从一个项目恢复到另一个项目。此外,Backup for GKE 是一项用于备份和恢复同一项目中 GKE 集群中的工作负载的服务。

此问题已存在一个 bug。请对此 Bug 请求投赞成票以获取有关此内容的未来更新,截至目前,产品工程团队正在等待此更新,目前没有 ETA。

评论

0赞 devops-admin 11/15/2023
是的,我在通过 Google Cloud Console 创建任何备份和还原之前启用了它。
0赞 devops-admin 11/15/2023
我已将这些权限添加到针对 GKE 集群服务帐户 ''' Kubernetes Engine Service Agent''' aka principal 。[email protected]Backup for GKE AdminBackup for GKE Backup AdminBackup for GKE Restore AdminGoogle Cloud Managed Identities Backup AdminKubernetes Engine Service Agent
0赞 devops-admin 11/15/2023
系统还会向源 GKE 集群服务帐号添加相同的权限。但是,它仍然失败了。
0赞 Hemanth Kumar 11/16/2023
@devops-admin :根据第 3 点作为参考,我观察到您需要给予,而您已经给出了 .项目 ID,可以是字母、数字和连字符的组合。建议您使用生成的项目 ID。请参阅此文档以识别项目 ID。这也是导致此错误的原因之一。project=PROJECT_IDProject Number
0赞 Hemanth Kumar 11/17/2023
@devops-admin:请让我知道共享信息是否有帮助。如果您有任何进一步的疑问,我很乐意为您提供帮助。