从GCE的VM中,我做了以下
gcloud auth activate-service-account --key-file <blah>
# "blah" is a service account key file (JSON) I generated from the web interface
gcloud config set project <project-name>
gcloud config set compute/zone <zone-name>
gcloud set container/cluster <cluster-name>
然后我试图跑
gcloud container clusters get-credentials <cluster-name>
并且失败并显示错误消息:
错误消息:&#34;错误:(gcloud.container.clusters.get-credentials) ResponseError:code = 403,message = Request不足 身份验证范围。&#34;
VM与GKE集群位于同一网络中。我使用来自GCE外部的机器的相同服务帐户密钥文件,对&#34;默认&#34;上的GKE集群尝试了同样的事情。网络,它成功了......
答案 0 :(得分:32)
要从GCE虚拟机使用Google Kubernetes Engine API,您需要在创建虚拟机时将其添加到虚拟机平台范围(“https://www.googleapis.com/auth/cloud-platform”)。
答案 1 :(得分:1)
现在有一个解决方案(仅在beta和alpha中),可以在现有GCE VM上设置范围。成功要做的就是在执行命令之前先停止VM。
首先,您应该了解(并复制)VM的当前作用域,以便可以将其与新作用域一起设置,请使用:
gcloud compute instances describe your-instance
在底部,您应该看到一个范围列表,将其复制。
然后,阅读Beta中此命令的文档(所有人都可以使用,但后果自负):https://cloud.google.com/sdk/gcloud/reference/beta/compute/instances/set-scopes
在执行此命令之前,请从GCE页面停止实例并等待其关闭。将会出现一个可怕的警告,请注意,如果虚拟机在90秒内未正常关闭(=成功关闭所有进程和服务),则在强制关闭虚拟机时文件系统可能会损坏。如果您对此感到不安全,请记好笔记并备份重要文件。
对我来说,在现有范围和新范围(云平台)的情况下,生成的set-scopes命令为:
gcloud beta compute instances set-scopes my-instance --zone=us-central1-a --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append,https://www.googleapis.com/auth/cloud-platform
答案 2 :(得分:0)
如果您通过GCP中的VM使用Google Kubernetes Engine API。您首先需要在虚拟机级别https://www.googleapis.com/auth/projecthosting,cloud-platform上添加所需的范围。这也可以通过GCP控制台来完成。停止VM实例,然后转到“编辑”选项,最后您将找到Cloud API访问范围。
答案 3 :(得分:0)
第1步:gcloud init
第2步:选择[2]创建新配置
第3步:输入配置名称。名称以小写字母开头,并且仅包含小写字母a-z,数字0-9和连字符'-':kubernetes-service-account
第4步:选择您要用于执行此配置操作的帐户:[2]使用新帐户登录
第5步:是否要继续(是/否)? y
第6步:将链接复制粘贴到brwoser并使用用于创建您的Google Cloud帐户的ID登录
第7步:登录后复制google提供的验证码,并将其粘贴到控制台中。
第8步:选择要使用的云项目:
第9步:您要配置默认的计算区域和区域吗? (是/否)? y
步骤10:请输入数字选择或文本值(必须与列表项完全匹配):8
您的Google Cloud SDK已配置好并可以使用!
完成此操作后,请确保为VM配置的服务帐户具有执行所需任务的权限。