我有两个群集,配置文件存储在.kube
中。
export KUBECONFIG=/home/vagrant/.kube/config-cluster1:/home/vagrant/.kube/config-cluster2
检查上下文
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* cluster-1 cluster-1 kubernetes-admin
cluster-2 cluster-2 kubernetes-admin
但是当我选择cluster-2作为当前上下文时,我得到一个错误
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* cluster-1 cluster-1 kubernetes-admin
cluster-2 cluster-2 kubernetes-admin
kubectl config use-context cluster-2
Switched to context "cluster-2".
kubectl get pods -A
error: You must be logged in to the server (Unauthorized)
如果我只导出cluster-2的配置,并尝试运行kubectl
,它可以正常工作。
我的问题是我是否正确地导出了配置文件,或者我应该做更多的事情。
3条答案
按热度按时间wkftcu5l1#
您需要将每个群集的
AUTHINFO
(配置文件中的context.user
)与各自的凭据分开。例如:
您可以在以下文章中找到更多有用的提示:
Using different kubectl versions with multiple Kubernetes clusters:
当您使用多个Kubernetes集群时,很容易混淆上下文并在错误的集群中运行
kubectl
。除此之外,Kubernetes对客户端(kubectl
)和服务器(kubernetes master)之间的版本不匹配有限制,因此在正确的上下文中运行命令并不意味着运行正确的客户端版本。为了克服这一点:
asdf
管理多个kubectl
版本KUBECONFIG
环境变量设置为在多个kubeconfig
文件之间更改kube-ps1
跟踪当前上下文/名称空间kubectx
andkubens
在集群/名称空间之间快速切换我还建议阅读以下内容:
xriantvc2#
我写了一个脚本,可以轻松切换kubeconfig和namespace。希望对你有帮助。
https://github.com/kingonion/k-use
jgwigjjp3#
来自Eduardo Baitello的帖子已经非常棒了,但我仍然想添加一些可能有助于处理serveral kubeconfigs的东西。
如果你在大型环境中工作,你通常需要处理多个kubeconfig。
添加到.bashrc/.zshrc(etc):
这将加载所有可以在~/. kube下找到的kubeconfig。随着-maxdepth的增加,你也可以索引子文件夹。它们在每个SHELL中都可用,并且可以由kubectl或kubectx访问,而无需从另一个kubeconfig进行新的导出。
或者,您可以调整以下别名:
这将-如果你有一个新的kubeconfig -重新加载它,而不必重新启动你的SHELL。
现在,您可以使用“kubectl”-“kubectl config get-context”显示配置并使用“kubectl config set-context”切换它们,或者使用kubctx(https://github.com/ahmetb/kubectx)。kubectx还为您提供了使用kubens的优势,它允许您永久切换命名空间。