Google cloud platform 使用gcloud和kubectl切换GCP帐户和上下文无效

Google cloud platform 使用gcloud和kubectl切换GCP帐户和上下文无效,google-cloud-platform,google-kubernetes-engine,gcloud,kubectl,Google Cloud Platform,Google Kubernetes Engine,Gcloud,Kubectl,我有2个gmail帐户,每个帐户与2个单独的GCP帐户关联。为了从命令行切换帐户,在过去两周左右的时间里,我一直在使用这两个命令: $ gcloud config configurations activate ACCT_NAME $ kubectl config set-context CONTEXT 注意:我也一直在使用'kubectx',这使得切换上下文比使用'kubectl config set context'更容易一些;基本上,打字要少一点。“kubectl config set

我有2个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.
因此,当前的上下文、帐户和关联的电子邮件地址是正确的。我不清楚为什么kubectl仍然试图通过上下文A(而不是上下文B)的电子邮件帐户访问GKE


有什么想法吗?

所以我在几周前发布了这个问题:

无论出于何种原因,我必须重新运行此命令才能使事情恢复正常:

$ gcloud container clusters get-credentials NAME
注意:您可以通过此命令“gcloud container clusters list”获取集群名称


我不知道为什么我必须重新运行获取凭据。我不相信我的证书改变了;这花了我一段时间才弄明白。

为管理两个帐户中多个群集的用户找到了一个相当丑陋但有效的解决方案:

必须调整
sed
命令,但:
sed-i'/access-token:/d'~/.kube/config

您是否找到了无缝执行此操作的解决方案?我已经试过了,但对我来说,额外的步骤似乎很乏味me@Teguh对不起,没有什么新的补充(但)这已经影响了我大约一年(至少,这是我第一次注意到它)。我经常在上班期间和下班后切换gcloud帐户。我目前正在使用一种变通方法,每次切换帐户时都会重新运行gcloud命令以获取上下文。挺烦人的,那只还不错。谢谢
$ gcloud container clusters get-credentials NAME