gcloud\kubectl 认证问题:忘记服务账号

gcloud \ kubectl authentication problem: forget service account

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

gcloud auth activate-service-account --key-file=path/to/key

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

kubectl --namespace production get pods

我收到的回复如下:

Error from server (Forbidden): pods is forbidden: User "SA-USER@PROGECTNAME.iam.gserviceaccount.com" cannot list resource "pods" in API group "" in the namespace "production": requires one of ["container.pods.list"] permission(s).

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

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

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

试过的都失败了。我仍然收到与上面相同的消息。

如何让 gcloudkubectl 忘记这个服务帐户?

谢谢!

您可以执行 gcloud auth application-default login

您还可以通过 gcloud config list 查看 gcloud CLI 的当前配置。您可以使用 gcloud config set param_name param_value 更改一些默认参数。例如(因为如果你有多个项目,你会经常使用它)

gcloud config set project MyProjectId

有了这些,就可以解决你的问题

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

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

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