【问题标题】: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 &lt;context name&gt; 在本地 docker-desktop kubernetes 集群和使用 docker 客户端的外部云 env 集群之间切换。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-03
        • 2019-03-23
        • 1970-01-01
        • 1970-01-01
        • 2018-12-15
        • 2020-01-12
        • 2021-05-27
        • 2021-10-14
        相关资源
        最近更新 更多