为什么在我的终端上的 gcloud 中出现 "get-credentials requires edit permission" 错误,而它在 Cloud Shell 中成功?

Why do I get "get-credentials requires edit permission" error in gcloud on my terminal, when it succeeds in Cloud Shell?

在我的笔记本电脑上,我能够执行大多数 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>

但是在 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>

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

gcloud config set container/use_client_certificate False

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