设置对基于云的K8s集群的访问权限时,我的Windows Docker ~/.kube/config
文件已被替换。
是否有一种方法可以重新创建它,而不必重新启动适用于Windows Kubernetes的Docker?
更新
我当前的~/.kube/config
文件现在设置为GKE集群。我不想为Docker重置Docker并破坏它。相反,我想为Windows的Docker创建一个单独的kubeconfig文件,即将其放置在其他位置而不是~/.kube/config
。
答案 0 :(得分:2)
您可能想要备份~/.kube/config
以获得GKE,然后在Docker for Windows上禁用/重新启用Kubernetes。拉出Windows命令提示符:
copy \<where-your-.kube-is\config \<where-your-.kube-is\config.bak
然后跟随this。本质上,取消选中该复选框,等待几分钟,然后再次检查。
您可以在不禁用或重新启用Docker上的Kubernetes的情况下进行重新创建,但是您必须确切知道API服务器和凭据(证书等)的位置:
kubectl config set-context ...
kubectl config use-context ...
奇怪的是,您指定~/.kube/config
,其中~
(代字号)是unix / linux的东西,但也许您的意思是$HOME
答案 1 :(得分:0)
您基本上想访问多个集群。一种选择是使用KUBECONFIG
环境变量。 Here is the documentation。
KUBECONFIG环境变量是配置文件路径的列表。对于Linux和Mac,此列表用冒号分隔,对于Windows,此列表用分号分隔。如果您有KUBECONFIG环境变量,请熟悉列表中的配置文件。
或者,您可以提供内联选项。
kubectl config --kubeconfig=config-demo set-context dev-frontend --cluster=development --namespace=frontend --user=developer
kubectl config --kubeconfig=config-demo set-context dev-storage --cluster=development --namespace=storage --user=developer
kubectl config --kubeconfig=config-demo set-context exp-scratch --cluster=scratch --namespace=default --user=experimenter
然后使用use-context
答案 2 :(得分:0)
如果您将wsl用作kubectl / docker客户端,我只想添加此内容。 您可以在C:\ Users \ username \ .kube \ config中找到本地kubernetes配置。
然后您可以将其用于create a new kubernetes context for docker。
例如:
cp /mnt/c/Users/username/.kube/config ~/.kube/docker-k8s.config
docker context create local-k8s --default-stack-orchestrator=kubernetes --kubernetes config-file=/home/username/.kube/docker-k8s.config --docker host=tcp://localhost:2375
注意::我已经在端口2375上公开了docker引擎。unixsock类型的连接的默认设置可以在上面的链接中找到。您需要将绝对路径添加到kubeconfig,不能使用'〜'。
然后,您可以使用docker context use <context name>
通过docker客户端在本地docker-desktop kubernetes集群和外部云环境集群之间进行切换。
docker context ls
将显示本地现有上下文。