Docker for Windows 在更新到版本 2.1.1.0 Edge(或稳定版)后停留在“Kubernetes 正在启动”

Irs*_*P I 30 windows docker kubernetes

我最近将桌面版 Docker 更新到最新的 Edge 通道版本:Windows 10 机器上的 2.1.1.0。不幸的是,更新后,Kubernetes 不再工作,因为它总是停留在“Kubernetes 正在启动”。

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

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

似乎没有任何工作。我该如何解决?

Irs*_*P I 52

经过数小时的尝试不同的东西,这终于帮助了我:

  1. 将 Docker 恢复为出厂默认设置并退出 Docker for Desktop
  2. 删除文件夹C:\ProgramData\DockerDesktop\pki(备份以防万一)
  3. 删除文件夹~\.kube\(再次备份以确保安全)
  4. 再次启动 Docker,打开 Docker 设置,进行必要的配置更改(添加代理,设置资源限制等),启用 Kubernetes 并让它启动
  5. 稍等片刻,Docker 和 Kubernetes 现在都将启动。

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

Unable to connect to the server: x509: certificate signed by unknown authority
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式解决此问题

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

或者,如果您在(公司)代理后面:添加kubernetes.docker.internalNO_PROXY(例如export NO_PROXY=kubernetes.docker.internal),前提是代理配置正确。

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

  • 我的日志位于:C:\Users\<USER>\AppData\Local\Docker\log.txt。 (4认同)
  • 这是您的主目录的 Linux 说法(通常:C:\users\<您的用户名>)。在 Linux 中,波形符是主目录的快捷方式。Irshad PI 可能在 Windows 上使用 Linux shell,这就是他/她这样回答的原因。 (2认同)
  • 我已经按照这个答案的建议做了,但这并没有为我解决问题。显然,它在错误的位置搜索 .kube\config 文件。因此,我添加了一个名为 KUBECONFIG 且值为“C:\Users\<your user name>\.kube\config”的环境变量。然后,在 Docker 应用程序的工具栏图标上,我选择退出 Docker Desktop,然后通过 exe 手动启动它。Kubernetes 随后已启动运行并已更改为绿色状态。通过运行“kubectl config current-context”,我现在可以看到 docker-desktop 上下文。我希望这对某人有帮助。 (2认同)

ogu*_*guz 16

我建议您检查您的 etc/hosts 文件以包含以下几行。

127.0.0.1       docker-for-desktop
127.0.0.1       kubernetes.docker.internal
Run Code Online (Sandbox Code Playgroud)

因为 docker 无法解析您的本地主机,并且它会卡在该状态。

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

  • 奇怪的是,Docker Desktop 将 host.docker.internal、gateway.docker.internal 和 kubernetes.docker.internal 添加到 HOSTS,但没有添加 docker-for-desktop。这就是我安装并启动 Kubernetes 所缺少的密钥。 (2认同)
  • 答对了!只需添加“127.0.0.1 docker-for-desktop”(“127.0.0.1 kubernetes.docker.internal 已经存在”),就可以了! (2认同)

小智 14

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


Jal*_*ara 6

我今天面临这个问题,并花了几个小时试图修复。第一件事是找出为什么它一直挂在开始。您可以通过检查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"
Run Code Online (Sandbox Code Playgroud)

一旦知道问题,那么我们就可以轻松解决它。我不得不删除的文件夹命名为PKIC:\ ProgramData \ DockerDesktop(如中提到的问题/ 4316)并重新启动泊坞窗。

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

希望这可以帮助!


Mih*_*ira 5

根据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(仍然需要几分钟才能启动)


小智 5

对我来说,docker 正在启动,kubernetes 却陷入了困境Starting

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

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