gcloud \ kubectl 身份验证问题:忘记服务帐户

No1*_*ver 2 service-accounts google-cloud-platform gcloud kubectl google-cloud-iam

我使用 gcloud 和 kubectl 来处理我的资源(Kubernetes、VM 等)。一切正常,直到我读到一些创建新服务帐户并通过云激活它的文章。像这样的东西:

gcloud auth activate-service-account --key-file=path/to/key
Run Code Online (Sandbox Code Playgroud)

创建的服务帐户对少数资源的权限有限。当我运行命令时,例如:

kubectl --namespace production get pods
Run Code Online (Sandbox Code Playgroud)

我收到的回复如下:

来自服务器的错误(禁止):pod 被禁止:用户“SA-USER@PROGECTNAME.iam.gserviceaccount.com”无法在命名空间“生产”中的 API 组“”中列出资源“pod”:需要 [“container”之一。 pods.list"] 权限。

SASA-USER@PROGECTNAME.iam.gserviceaccount.com是我昨天创建的服务帐户。由于某种原因,它控制了我的默认权限,并且我被锁定,因为该用户几乎没有权限。

我试图忘记gcloud这个服务帐户但没有成功。我尝试过的事情:

  1. 卸载和安装gcloudkubectl
  2. 删除配置目录(“~/.config/gcloud/”)
  3. gcloud auth login

所有这些尝试都失败了。我仍然收到与上面相同的消息。

我如何创建gcloudkubectl忘记此服务帐户?

谢谢!

mot*_*bói 9

新身份验证插件的更新:

前段时间,gke 采用了kubernetes 新的 auth 插件架构

在新插件 gke-gcloud-auth-plugin 中,身份验证缓存位于

  • 苹果系统:~/.kube/gke_gcloud_auth_plugin_cache

(请编辑此答案以包含其他操作系统中的位置。)

您只需删除该文件即可。


kubectl 使用的身份验证令牌过期存在问题。

当您通过选择新用户gcloud并发出kubectl请求时,身份验证令牌会在本地缓存。

expiry解决方法是编辑 ~/.kube/config 并为相关用户部分的字段设置过去的日期。

  • 这实际上为我解决了。谢谢! (2认同)