使用gcloud和kubectl切换GCP帐户和上下文无效。

11

我有两个Gmail账户,每个账户都关联着2个独立的GCP账户。为了在命令行中切换账户,我过去两周一直在使用以下两个命令:

$ gcloud config configurations activate ACCT_NAME
$ kubectl config set-context CONTEXT

注意:我也一直在使用'kubectx',它使切换上下文比使用'kubectl config set-context'更容易一些;基本上打字少了一点。 'kubectl config set-context'和'kubect'以前都可以使用(我想)。

直到今天早上似乎这种方法一直都很好用。 我试图从上下文A切换到上下文B,但现在我遇到了像这样的错误:

$ kubectl get pods -A                                             
Error from server (Forbidden): pods is forbidden: User "<my_email_address>" cannot list resource "pods" in API group "" at the cluster scope: Required "container.pods.list" permission.
显示的电子邮件地址是上下文A的,而不是上下文B的。 我检查了以下命令以验证当前(或活动)上下文和电子邮件帐户是否正确:
$ kubectl config current-context
$ gcloud config configurations list

目前的上下文,账户和相关电子邮件地址都是正确的。我不清楚为什么 kubectl 仍然尝试使用上下文 A 的电子邮件帐户访问 GKE(而不是上下文 B)。

您有什么想法吗?

1个回答

16

几周前,我发布了这个问题:

https://serverfault.com/questions/997220/kubectl-not-showing-new-context-created-in-gcp

出于某种原因,我不得不重新运行这个命令才能让事情再次正常:

$ gcloud container clusters get-credentials NAME
注意:您可以通过此命令“gcloud container clusters list”获取集群名称。
我不知道为什么必须重新运行get-credentials。我不认为我的凭据有变化;这让我花了一段时间才弄明白。

你找到无缝完成这个任务的解决方案了吗?我已经尝试过这种方法,它可以工作,但是额外的步骤对我来说有些繁琐。 - Teguh Hidayat
@Teguh 抱歉,目前没有新的内容可以添加。 - jersey bean
这个问题已经影响了我大约一年的时间(至少在我第一次注意到它的时候)。我经常在工作期间和工作之后在不同的gcloud账户之间切换。目前,我使用的解决方法是每次切换账户时重新运行gcloud命令以获取上下文。非常烦人。 - Matt Welke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接