删除默认Compute Engine服务账号后无法创建GKE Autopilot集群如何解决
解决方案1:重新创建默认Compute Engine服务账号
默认Compute Engine服务账号格式为[项目编号]-compute@developer.gserviceaccount.com,删除后30天内可直接恢复,超过30天需手动重建:
- 第一步先获取项目编号,执行命令:
gcloud projects describe [你的项目ID] --format="value(projectNumber)"
确认返回的编号前缀和报错中的1673******一致。 - 若删除时间未超过30天,执行恢复命令:
gcloud iam service-accounts undelete [项目编号]-compute@developer.gserviceaccount.com --project [你的项目ID] - 若超过30天无法恢复,手动创建同名服务账号:
- 创建账号:
gcloud iam service-accounts create [项目编号]-compute --display-name="Compute Engine default service account" --project [你的项目ID] - 绑定默认权限:
gcloud projects add-iam-policy-binding [你的项目ID] --member="serviceAccount:[项目编号]-compute@developer.gserviceaccount.com" --role="roles/editor"
如果不需要过高权限,可将editor角色替换为GKE运行所需的最小权限集合,包含roles/container.nodeServiceAgent、roles/logging.logWriter、roles/monitoring.metricWriter等
- 创建账号:
重建完成后即可通过控制台正常创建GKE Autopilot集群,无需额外配置。
解决方案2:创建GKE Autopilot集群时指定自定义服务账号
GKE Autopilot控制台创建入口未提供自定义服务账号选项,需通过gcloud命令行或API/基础设施即代码工具指定:
- 第一步为自定义服务账号绑定GKE节点运行所需的最小权限:
gcloud projects add-iam-policy-binding [你的项目ID] \ --member="serviceAccount:[自定义服务账号名]@[你的项目ID].iam.gserviceaccount.com" \ --role="roles/container.nodeServiceAgent" \ --role="roles/logging.logWriter" \ --role="roles/monitoring.metricWriter" \ --role="roles/stackdriver.resourceMetadata.writer" - 执行gcloud命令创建Autopilot集群,指定自定义服务账号:
gcloud container clusters create-auto [集群名称] \ --location=[集群区域,如us-central1] \ --project=[你的项目ID] \ --service-account=[自定义服务账号名]@[你的项目ID].iam.gserviceaccount.com - 创建完成后可执行以下命令验证服务账号配置:
gcloud container clusters describe [集群名称] --location=[集群区域] --format="value(nodeConfig.serviceAccount)"
内容的提问来源于stack exchange,提问作者Cyril Graze
相关产品推荐
相关产品推荐

