为什么我在终端上的 gcloud 中收到“get-credentials 需要编辑权限”错误,当它在 Cloud Shell 中成功时?

Jos*_*Fox 5 google-cloud-platform gcloud google-kubernetes-engine

在我的笔记本电脑上,我能够执行大多数gcloud命令,例如创建集群和许多其他命令。我有项目所有者角色。

但是当我尝试获取 K8s 集群的凭据时,出现权限错误。但在 Cloud Shell 中,该命令会成功。

两者的登录帐户相同。

% gcloud container clusters get-credentials my-first-cluster-1 --zone us-central1-c --project my-project
Fetching cluster endpoint and auth data.
ERROR: (gcloud.container.clusters.get-credentials) get-credentials requires edit permission on my-project
$ gcloud config list account --format "value(core.account)"
<MY EMAIL>
Run Code Online (Sandbox Code Playgroud)

但是在 Cloud Shell 中,这成功了!

$ gcloud container clusters get-credentials my-first-cluster-1 --zone us-central1-c --project my-project
Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-first-cluster-1.
$ gcloud config list account --format "value(core.account)"
<MY EMAIL>
Run Code Online (Sandbox Code Playgroud)

Lun*_*ast 8

在这种情况下,错误消息确实不正确并且不是很有帮助。当 gcloud 配置值container/use_client_certificate设置为True但未配置客户端证书时,会出现此问题(请注意,客户端证书是旧式身份验证方法,默认情况下对于使用 GKE 1.12 及更高版本创建的集群禁用。)。False通过以下 gcloud 命令将其设置为可解决此问题:

gcloud config set container/use_client_certificate False
Run Code Online (Sandbox Code Playgroud)

此配置值False在 Cloud Shell 中默认设置为,这说明了您遇到的不同行为。