删除后取回 docker-for-windows Kubernetes kubeconfig 文件

Get back docker-for-windows Kuberentes kubeconfig file after deleting it

我的 Docker for Windows ~/.kube/config 文件在设置对基于云的 K8s 集群的访问时被替换。

有没有办法重新创建它而不必为 Windows Kubernetes 重新启动 Docker?

更新 我当前的 ~/.kube/config 文件现在设置为 GKE 集群。我不想为 Kubernetes 重置 Docker 并破坏它。相反,我想为 Docker 为 Windows 创建一个单独的 kubeconfig 文件,即将它放在其他位置而不是 ~/.kube/config.

您可能想要为 GKE 备份 ~/.kube/config,然后为 Windows 在 Docker 上备份 disable/reenable Kubernetes。拉出 Windows 命令提示符:

copy \<where-your-.kube-is\config \<where-your-.kube-is\config.bak

然后关注this。本质上,取消选中该框,等待几分钟,然后再次选中。

您可以在 Docker 上没有 disabling/reenabling Kubernetes 的情况下重新创建,但您必须确切地知道您的 API 服务器和凭据(证书等)的位置:

 kubectl config set-context ...
 kubectl config use-context ...

奇怪的是你指定 ~/.kube/config 其中 ~ (代字号)是 unix/linux 的东西,但也许你的意思是 $HOME

您基本上想要访问多个集群。一种选择是使用 KUBECONFIG 环境变量。 Here is the documentation.

The KUBECONFIG environment variable is a list of paths to configuration files. The list is colon-delimited for Linux and Mac, and semicolon-delimited for Windows. If you have a KUBECONFIG environment variable, familiarize yourself with the configuration files in the list.

或者,您可以提供内联选项。

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

我只想补充一点,以防您像我一样使用 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 连接类型的默认设置可以在 link 多于。需要在kubeconfig中添加绝对路径,不能使用'~'。

然后您可以使用 docker context use <context name> 在您的本地 docker-桌面 kubernetes 集群和带有您的 docker 客户端的外部云环境集群之间切换。

docker context ls 将显示本地现有上下文。