【问题标题】:Get back docker-for-windows Kuberentes kubeconfig file after deleting it删除后取回 docker-for-windows Kubernetes kubeconfig 文件
【发布时间】:2019-02-17 15:29:33
【问题描述】:
我的 Docker for Windows ~/.kube/config 文件在设置对基于云的 K8s 集群的访问时被替换。
有没有办法重新创建它而无需重新启动 Docker for Windows Kubernetes?
更新
我当前的 ~/.kube/config 文件现在设置为 GKE 集群。我不想为 Kubernetes 重置 Docker 并破坏它。相反,我想为 Docker for Windows 创建一个单独的 kubeconfig 文件,即将它放在其他位置而不是 ~/.kube/config。
【问题讨论】:
标签:
kubernetes
docker-for-windows
docker
【解决方案1】:
您可能希望为 GKE 备份您的 ~/.kube/config,然后在 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
【解决方案2】:
您基本上想要访问多个集群。一种选择是使用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
【解决方案3】:
我只是想补充一点,以防你像我一样使用 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 引擎。unix sock 类型的连接的默认设置可以在上面的链接中找到。 kubeconfig需要添加绝对路径,不能使用'~'。
然后您可以使用docker context use <context name> 在本地 docker-desktop kubernetes 集群和使用 docker 客户端的外部云 env 集群之间切换。
docker context ls 将显示本地现有上下文。