我正在使用 Google Cloud Platform,并且在 GKE 上运行两个不同的 kubernetes 集群。现在这些集群是区域集群,并且在不同的区域上运行。问题是当我使用云外壳时,kubectl get pods
会从另一个集群获取 pod。我已经kubectl config set-cluster xxx
设置了集群,但仍然只显示其他 pod。
答案1
如果kubectl get pods
从另一个集群返回 pod,则您的 kubectl 配置可能指向另一个集群。
您可以使用以下命令检查 kubectl 正在使用的当前上下文(当前集群)kubectl config current-context
:。
注意,正如 GKE 文档所强调的那样:
当您使用 Google Cloud 控制台或从其他计算机使用 gcloud CLI 创建集群时,您环境的 kubeconfig 文件不会更新。此外,如果项目团队成员使用 gcloud CLI 从其计算机创建集群,则他们的 kubeconfig 会更新,但您的不会更新。kubeconfig 条目包含以下任一内容:
您的凭据(如 gcloud auth list 中所示),或者
应用程序默认凭据(如果已配置)。
要在您的环境中生成 kubeconfig 上下文,请确保您拥有 container.clusters.get 权限。提供此权限的最低特权 IAM 角色是 container.clusterViewer。
要为特定集群生成 kubeconfig 上下文,请运行以下命令:
gcloud container clusters get-credentials CLUSTER_NAME
将 CLUSTER_NAME 替换为您的集群的名称。
如果目标集群未在默认区域或区域中运行,或者您未设置默认区域或区域,则需要在命令中提供区域(--region=REGION)或区域(--zone=ZONE)。
注意:运行 gcloud container clusters get-credentials 也会将 kubectl 的当前上下文更改为该集群。