【问题标题】:Docker for Windows stuck at "Kubernetes is Starting" after updating to version 2.1.1.0 Edge (or Stable)Docker for Windows 在更新到版本 2.1.1.0 Edge(或稳定版)后卡在“Kubernetes 正在启动”
【发布时间】:2020-01-02 19:36:07
【问题描述】:

我最近在 Windows 10 机器上将我的 Docker for Desktop 更新到了最新的 Edge 通道版本:2.1.1.0。不幸的是,更新后,Kubernetes 不再工作,因为它总是卡在“Kubernetes is Starting”。

到目前为止,我已经尝试了以下方法。

  • 重启 Docker
  • 重置 Kubernetes 集群
  • 恢复出厂默认设置
  • 重启机器
  • 卸载并重新安装 Docker

似乎没有任何效果。我该如何解决?

【问题讨论】:

  • GitHub docker/for-mac 项目可能是处理一般支持请求的更好地方。

标签: windows docker kubernetes


【解决方案1】:

经过数小时尝试不同的事情后,这终于帮助了我:

  1. 将 Docker 恢复为出厂默认设置并退出 Docker for Desktop

  2. 删除文件夹C:\ProgramData\DockerDesktop\pki(备份它以防万一)。请注意,许多人报告该文件夹位于其他地方:C:\Users\<user_name>\AppData\Local\Docker\pki

  3. 删除文件夹~\.kube\(再次备份以确保安全)

  4. 再次启动 Docker,打开 Docker 设置,进行必要的配置更改(添加代理、设置资源限制等),启用 Kubernetes 并让它启动

  5. 稍等片刻,Docker 和 Kubernetes 都会启动。

当您尝试使用 kubectl 连接到 Kubernetes 时,您可能会遇到另一个问题,例如

Unable to connect to the server: x509: certificate signed by unknown authority

你可以解决这个问题

  1. 在文本编辑器中打开 ~.kube\config
  2. https://kubernetes.docker.internal:6443 替换为https://localhost:6443
  3. 再次尝试连接。

或者,如果您使用(公司)代理:将kubernetes.docker.internal 添加到NO_PROXY(例如export NO_PROXY=kubernetes.docker.internal),前提是代理配置正确。

如果这仍然不能解决您的问题,请查看C:\ProgramData\DockerDesktop\log\ 的日志以进一步调试问题

【讨论】:

  • ~\.kube\ 到底在哪里?我找不到这样的目录。
  • 这是您的主目录的 Linux 用语(通常为:C:\users\)。在 Linux 中,波浪号是主目录的快捷方式。 Irshad P 我可能在 Windows 上使用 Linux shell,这就是他/她这样回答的原因。
  • 我在 Windows 10 (1909) 上遇到了类似的问题 (Docker 2.0.0.3 (31259)),并且能够按照这些步骤运行 Kubernetes。
  • 我的日志位于:C:\Users\\AppData\Local\Docker\log.txt。
  • 我已经按照这个答案的建议做了,但这并没有为我解决问题。显然,它在错误的位置搜索 .kube\config 文件。因此,我添加了一个名为 KUBECONFIG 且值为“C:\Users\\.kube\config”的环境变量。然后,在 Docker 应用程序的工具栏图标上,我选择了退出 Docker 桌面,然后通过 exe 手动启动它。 Kubernetes 之后启动器运行并已更改为绿色状态。通过运行“kubectl config current-context”,我现在可以看到 docker-desktop 上下文。我希望这对某人有所帮助。
【解决方案2】:

我建议您检查您的 etc/hosts 文件是否有以下行。

127.0.0.1       docker-for-desktop
127.0.0.1       kubernetes.docker.internal

因为 docker 无法解析您的 localhost 并且卡在该状态。

您是否支持某些公司代理?如果是这样,请在第一次启动 K8 时尝试切换您的代理或尝试绕过它。 我有同样的问题 这实际上解决了我的问题,而不是升级或降级。

【讨论】:

  • 非常感谢。出于某种原因,我的主机文件被覆盖了,而这个答案正是所需的解决方案。
  • Antivir 正在阻止主机文件中的更改。这解决了我的问题。
  • 我刚刚将 kubernetes.docker.internal 添加到 etc/hosts 并且它工作了
  • 奇怪的是 Docker Desktop 将 host.docker.internal、gateway.docker.internal 和 kubernetes.docker.internal 添加到 HOSTS 而不是 docker-for-desktop。那是为我安装和启动 Kubernetes 的缺失键。
  • 宾果游戏!只需添加“127.0.0.1 docker-for-desktop”(“127.0.0.1 kubernetes.docker.internal 已经存在”),就可以了!
【解决方案3】:

Irshad 的解决方案对我有用。就我而言,pki 目录位于
C:\Users\\AppData\Local\Docker

【讨论】:

    【解决方案4】:

    我今天遇到了这个问题,花了几个小时试图解决这个问题。首先是找出为什么它一直挂在启动。您可以通过查看 C:\ProgramData\DockerDesktop 的日志找到原因。会有一些service.txt文件,打开最近修改的那个。

    对我来说问题是这样的,

    [19:32:58.189][ApiProxy][Error] time="2020-01-20T19:32:58+13:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: EOF"
    

    一旦知道问题,我们就可以轻松解决它。我必须删除 C:\ProgramData\DockerDesktop 中名为 pki 的文件夹(如 issues/4316 中所述)并重新启动 docker。

    现在一切都好。这可能不是启动时所有挂起的原因,但检查日志肯定会有所帮助。

    希望这会有所帮助!

    【讨论】:

    • 在我的 Windows 上,文件夹和文件不在 DockerDesktop 上,而是(通过 gitbash):~/AppData/Local/Docker/log.txt
    【解决方案5】:

    我在 Windows 10 上遇到了 Docker Desktop 2.4.0 的问题。 日志文件位于不同的位置 -

    C:\Users\AppData\Local\Docker\log.txt

    日志文件总能反映真实情况。就我而言,我手动编辑了

    C:\Users.kube\config yaml 文件

    并且弄乱了空格和制表符。改正后,开始顺利!

    【讨论】:

      【解决方案6】:

      根据https://forums.docker.com/t/waiting-for-kubernetes-to-be-up-and-running/47009 的信息对我有用:

      1. 将 Docker 重置为出厂设置
      2. 退出 Docker
      3. 将 KUBECONFIG 环境变量设置为 %USERPROFILE%\.kube\config
      4. 重启 Docker 并启用 Kubernetes(仍然需要几分钟才能启动)

      【讨论】:

      • 路径的正确值为 "%USERPROFILE%\.kube\config"。
      • 在 Windows 上使用 powershell # cd ~\.kube\config
      • 我最初安装了 minikube,但我已将其删除。所以我的步骤是: 1. 重置 docker-desktop 2. 删除我现有的 %USERPROFILE%\.kube\config 3. 再次在 docker-desktop 中启用 Kubernetes 4. 等待大约 3-5 分钟 这似乎已经修复了。谢谢你的回答
      【解决方案7】:

      我的问题在接下来的步骤中得到了解决:

      1. 转到C:\Windows\System32\drivers\etc
      2. 右键单击 hosts 文件并转到属性
      3. 禁用只读模式
      4. 重新安装docker

      【讨论】:

        【解决方案8】:

        对我来说,docker 正在启动,kubernetes 被困在Starting

        Irshad 的解决方案也适用于我,只需删除 pki 文件夹即可。

        Windows 的文件夹位置:C:\Users\<username>\AppData\Local\Docker\pki

        【讨论】:

          【解决方案9】:

          如果您正在查看如何至少禁用 Kubernetes 和重置按钮无济于事:

          1. 点击“重置 Kubernetes 集群”
          2. 重启docker(左边的Kubernetes状态现在必须是红色的)
          3. 清除“启用 Kubernetes”复选框
          4. 再次重启 docker。

          【讨论】:

            【解决方案10】:

            浏览了上面的每个答案,这是唯一为我修复它的答案!

            它包含了上面的一些东西,但是清理所有文件很重要,否则,它不会得到修复

            1 卸载 docker 2 在您的 windows 用户文件夹中,删除以下内容

            .kube
            .docker
            

            3 删除 ProgramData

            中的 dockerdockerDesktop

            C:\Users\user\AppData\Local C:\user\raffaeler\AppData\Roaming

            4 安装最新的 Docker

            5 然后只激活 Kubernetes,不激活其他选项。

            继续查看以下日志文​​件以了解进度。对我来说,kubernetes 的出现花了很多时间。

            %USERPROFILE%\AppData\Local\Docker\log.txt
            %USERPROFILE%\AppData\Roaming\Docker\log\vm\kubelet.log
            %USERPROFILE%\AppData\Roaming\Docker\log\vm\dockerd.log
            

            【讨论】:

              猜你喜欢
              • 2021-05-27
              • 1970-01-01
              • 2020-04-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多