【问题标题】:Why do I get "get-credentials requires edit permission" error in gcloud on my terminal, when it succeeds in Cloud Shell?为什么我在终端上的 gcloud 中出现“get-credentials 需要编辑权限”错误,当它在 Cloud Shell 中成功时?
【发布时间】:2020-11-06 07:39:00
【问题描述】:

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

【问题讨论】:

  • 很好奇。我想知道报告的错误是否是实际错误?您可以尝试使用--log-http 的命令来查看底层请求是否存在明显差异?这是一个错字还是错误真的说“需要编辑权限”?我希望它说“编辑许可”?如果不出意外,另一个错误。
  • gcloud 版本是否相同?
  • 我找到了您几个月前创建的 this public issue。您能否确认gcloud config get-value container/use_client_certificate 在两种环境中返回相同的值?
  • @LundinCast 谢谢,就是这样!似乎我看到了很多错误,以至于我忘记了它们。请添加答案,以便我接受并为未来的用户提供参考。
  • @Joshua Fox,我很高兴它有所帮助。我已经按照你的建议写了一个答案。我还冒昧地编辑了您的问题标题,添加了实际的错误消息,以便更容易找到。

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


【解决方案1】:

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

gcloud config set container/use_client_certificate False

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

【讨论】:

  • 谢谢!此答案适用于 GKE v1.14.10-gke.50,适用于新创建的 1.14 集群。较早的集群(具有较早 gke.xx 版本的 1.14)没有给出此错误。 gcloud 版本在两种情况下都是相同的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-20
  • 2014-02-06
  • 1970-01-01
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多