【问题标题】:Cloud container clusters create `compute.networks.get` permission error云容器集群创建`compute.networks.get`权限错误
【发布时间】:2019-11-08 14:55:32
【问题描述】:

我正在尝试使用 GKE 创建集群。我有一个项目我已经在使用了。

当我跑步时

gcloud container clusters create cluster1

我得到以下信息:

错误:(gcloud.container.clusters.create) ResponseError: code=403, message=Google Compute Engine: 'projects//global/networks/default' 需要'compute.networks.get' 权限。

当我使用 Web UI 时,也会发生同样的事情。我的服务帐号和我的用户都有所有者角色。

我尝试了以下方法来使集群创建命令正常工作:

  1. 我尝试为现有服务帐户的项目添加策略绑定:
gcloud projects add-iam-policy-binding <my-project> \
    --member serviceAccount:<my-user>@<my-project>.iam.gserviceaccount.com \
    --role  roles/compute.admin
  1. 我读到需要启用容器 api 服务

gcloud services enable container.googleapis.com

  1. 重新开始。我删除了服务帐户,创建了一个新帐户并激活了信用:
gcloud auth activate-service-account <my-user>@<my-project>.iam.gserviceaccount.com --key-file ${GOOGLE_APPLICATION_CREDENTIALS}
  1. 我还尝试使用我的帐户用户进行身份验证:
gcloud auth login

这些都不起作用,我无法创建集群

【问题讨论】:

  • 您是否使用共享 VPC?
  • 1) 您要在哪里创建集群?从您的桌面(在 Google Cloud 之外)还是从在 Compute Engine 实例中运行的命令行? 2) gcloud auth login 使用您的用户凭据 (someone@example.com)。 3)你需要roles/compute.adminroles/container.admin
  • 即使我拥有项目的所有权,我也将角色计算引擎管理员和 kubernetes 引擎管理员分配给了我的根用户。我仍然无法创建基本集群

标签: google-cloud-platform cluster-computing google-kubernetes-engine gcloud google-cloud-iam


【解决方案1】:

我想我会在这里回答我自己的问题。来自service account docs

当您使用 GCP Console 创建新的 Cloud 项目时,如果为您的项目启用了 Compute Engine API,则默认情况下会为您创建一个 Compute Engine 服务帐号。使用电子邮件可识别:

PROJECT_NUMBER-compute@developer.gserviceaccount.com

我以某种方式删除了默认创建的服务帐户以及可能的关联角色。我想这就是为什么我不能再在我的项目下创建集群了。与其试图弄清楚如何重新创建,我决定最好只是开始一个新项目。之后,集群创建 API 和控制台就可以正常工作了。

【讨论】:

  • 您的选择是正确的。 documentation 建议不要重新创建已删除的服务帐户。
  • 这正是问题所在,您进行原始容器创建调用时不会返回403错误,它是由计算API返回的,因为容器服务帐户没有正确的权限。您应该有 2 个服务帐户,一个是您提到的,另一个是容器机器人帐户
【解决方案2】:

调试:

gcloud container subnets list-usable --project service-project --network-project shared-vpc-project

如果您在输出中收到警告:

WARNING: Failed to get metadata from network project. GCE_PERMISSION_DENIED: 
Google Compute Engine: Required 'compute.projects.get' permission for 
'projects/shared-vpc-project'

这意味着您在宿主项目中的 google 管理的 gke 服务帐户不存在。

要解决转到托管项目 API 并启用 Kubernetes Engine API。如果已启用,请将其禁用并重新启用。

【讨论】:

    【解决方案3】:

    我认为您应该设置计算引擎服务帐户权限:

     gcloud projects add-iam-policy-binding <my-project> \
    --member [PROJECT_NUMBER]-compute@developer.gserviceaccount.com \
    --role  roles/compute.admin
    

    【讨论】:

    • 很抱歉这对我不起作用。我的用户已经拥有完整的所有权。还有其他事情正在发生。考虑删除项目并重新开始。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    相关资源
    最近更新 更多