【问题标题】:Google Compute Engine: Required 'compute.zones.get' permission errorGoogle Compute Engine:必需的“compute.zones.get”权限错误
【发布时间】:2020-06-24 16:38:32
【问题描述】:

我正在尝试在 Google Cloud Platform 中创建 Kubernetes 集群,当我尝试从 Web 应用创建集群时收到以下错误:

Compute Engine 发生未知错误:“EXTERNAL:Google Compute Engine:需要“compute.zones.get”权限 'projects/my-project-198766/zones/us-west1-a'”。错误代码:“18”

当我使用 gcloud 时,我会收到以下回复:

(gcloud.container.clusters.create) ResponseError: code=403, message=Google Compute Engine:需要“compute.zones.get”权限 对于 'projects/my-project-198766/zones/us-west1-a'

请注意,我拥有 Owner 角色,我可以毫无问题地创建 VM 实例。

有什么想法吗?

【问题讨论】:

    标签: google-cloud-platform google-compute-engine google-kubernetes-engine


    【解决方案1】:

    如果您的云服务机器人以某种方式被删除为项目编辑器,则可能会出现此类问题。我最好的猜测是,在你的情况下,这就是问题所在。

    这可能是由于具有 SetIamPolicy 的 API 调用缺少“角色/编辑器”绑定中的云服务机器人。 SetIamPolicy 是直接 PUT,它将覆盖请求中提供的任何策略。您可以使用以下命令获取项目的 IAM 策略列表 given in this article

    gcloud projects get-iam-policy [project-id]
    

    从列表中,您可以检查以下服务帐户是否具有编辑权限。

    [id]@cloudservices.gserviceaccount.com

    要解决此问题,您可以grant the mentioned service account“编辑” 权限并检查是否解决了问题。

    希望这会有所帮助。

    【讨论】:

    • 这对我不起作用。我有具有项目编辑权限的服务帐户,我的帐户是所有者角色帐户。我仍然无法让 gcloud 创建集群而不抱怨
    • 我必须添加以下两个 SA 并赋予它们这些角色。 PROJECT_ID-compute@developer.gserviceaccount.com(Compute Engine 默认服务帐号),角色:Dataproc Worker,服务帐号用户 PROJECT_ID@cloudservices.gserviceaccount.com(Google API 服务代理),角色:Editor
    • @DavidXia 您的评论解决了问题,谢谢!
    【解决方案2】:

    就我而言,当我尝试创建 kubernetes 集群时,我删除了服务帐户/IAM 或其他任何内容,并且弹出了相同的错误消息。

    我要求 Google 重新创建我的服务帐户,他们提到您只需再次启用服务帐户及其权限即可重新创建它们。因此,就我而言,我运行了以下两个命令以使 kubernetes 再次工作:

    gcloud services enable compute
    gcloud services enable container
    

    这是他们给我的链接: https://issuetracker.google.com/64671745#comment2

    【讨论】:

    • id 禁用然后使用上述启用服务,它解决了我的问题
    • @MaduAlikor 哦,谢谢!下次遇到这种情况我会试试的
    【解决方案3】:

    我想我明白了。我试着听从GitHub 的建议。我需要在我的帐户(称为blahblah-compute@developer.gserviceaccount.com)上设置的权限是:

    roles/compute.instanceAdmin roles/editor roles/iam.serviceAccountUser

    最后一个似乎很关键。

    【讨论】:

      【解决方案4】:

      对我来说,从控制台使用新名称重新创建服务帐户解决了这个问题。我只为服务帐户赋予了“编辑”角色

      【讨论】:

        【解决方案5】:

        我不小心删除了计算服务帐户。我必须按照上面提到的所有步骤,即。

        1. 取消删除计算服务帐户
        2. 将权限添加回服务帐户 - editor、serviceaccountuser、computeinstanceAdmin
        3. 再次启用计算和容器服务。尽管这些没有被禁用,但运行 gcloud 服务会启用计算容器,为计算机器人创建一些默认服务帐户,例如 service-@compute-system.iam.gserviceaccount.com 和 service-@container-engine-robot.iam.gserviceaccount。 com

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多