Google Compute Engine:必需的'compute.zones.get'权限错误

时间:2018-01-12 18:37:27

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

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

  

计算引擎中出现未知错误:“EXTERNAL:Google   计算引擎:必需'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'

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

有什么想法吗?

4 个答案:

答案 0 :(得分:3)

在我的情况下,当我尝试创建kubernetes集群时,我删除了服务帐户/ IAM或其他,并且弹出了同样的错误消息。

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

gcloud services enable compute
gcloud services enable container

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

答案 1 :(得分:1)

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

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

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

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

  

[ID] @ cloudservices.gserviceaccount.com

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

希望这有帮助。

答案 2 :(得分:0)

对我来说,可以从控制台重新创建一个具有新名称的服务帐户,从而解决了该问题。我只将“编辑”角色赋予了服务帐户

答案 3 :(得分:0)

我不小心删除了计算服务帐户。我必须遵循上述所有步骤,即。

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

希望这会有所帮助