在Windows 10上,Kubernetes一直出现"正在启动......"的错误

30
我在Windows 10机器上安装了一个Kubernetes单节点集群。由于一些错误,我不得不重新安装Docker Desktop,自那以后,Kubernetes安装失败,而Docker成功安装。尝试解决的所有努力,例如删除.kube目录中的config文件和完全重新安装,都失败了。附图为详细信息。安装的Docker版本是Docker version 18.09.2,build 6247962。所有在线搜索努力都没有产生可能的解决方案。我会感激指向解决方案或解决方法的指针。

enter image description here

16个回答

11

我遇到了两种错误:

  1. 系统Pod正在运行,找到标签但仍在等待标签……
  2. xxxx:EOF

最终,我按照以下项目的建议解决了问题:https://github.com/AliyunContainerService/k8s-for-docker-desktop/ 按照其指示操作,如果不起作用, 删除~/.kube和~/Library/Group\ Containers/group.com.docker/pki目录,然后重新启动Docker桌面并等待约5分钟。 Kubernetes状态最终为 running


7

如果您没有在 C:/ProgramData/DockerDesktop 文件夹中找到 pki 文件夹,您可以在以下位置找到它:

C:\Users\<your_user_name>\AppData\Local\Docker

尝试删除它并查看是否有效。同时确保删除.kube文件夹。


这个文件夹是什么?这真是一件随意的事情。我尝试了清除重置并添加代理ENV变量。这是唯一有效的方法。我没有删除.kube文件夹,那样可能会导致我失去所有上下文,我不想要那样。 - Teebu

6
删除C:\programdata\DockerDesktop中的pki目录解决了我的问题。

1
很不幸,这个方法只对我第一次起作用。错误又出现了。pki文件夹已经不存在了,所以我无法再删除它了... - relief.melone
我没有这样的文件夹。 - dermoritz

5
我建议您使用命令 docker ps -a --filter name=k8s 检查运行的Kubernetes组件,如Nepomucen here所推荐。
然后,使用命令 docker logs {previous command中的容器ID} 检查每个组件的日志。您可能会从日志中得到一些想法。
在我的情况下,它是- x509:证书对于docker-for-desktop、kubernetes、kubernetes.default、kubernetes.default.svc、kubernetes.default.svc.cluster.local、host.docker.internal有效,而不是vm.docker.internal 因此,我尝试了这个 link 中提出的解决方案,并且它对我有用。

2
在我的情况下,它没有创建任何Docker容器(甚至检查了系统容器)。删除 C:\ProgramData\DockerDesktop\pki 并重新启动Docker即可解决问题。 - Poulad

3
对于任何来到这个问题的人,对我而言有效的方法如下:
  1. 停止 Docker
  2. 在Windows环境变量列表中添加 kubernetes.docker.internal,名称为 NO PROXY (**)
  3. 将 Docker 重置为默认设置
  4. 关闭并重新打开它
  5. 启用 Kubernetes

*我按照此 Github Issue 中的步骤执行:https://github.com/docker/for-win/issues/6627#issuecomment-637713206。您可以在那里找到更多的解释,但主要是 Windows 需要让 Kubernetes“绕过”其代理。

一些客户端支持 no_proxy 环境变量,该变量指定了不需要查询代理的一组域名

**要添加一个 Windows 环境变量,在 Windows 搜索中键入 environment 并打开“编辑系统环境变量”,或直接从控制面板打开。点击 environment variables 按钮,然后将其添加到 system variables


1
我遇到了同样的问题,并以相同的方式解决,但在阅读这个答案之前 :) 实际上,我陷入了这个问题是因为手动设置了 HTTPS_PROXY 环境变量,我为一些其他应用程序使用情况设置了它。 - Ram

2

对我而言,只需在“重置”选项卡上执行“重置Kubernetes集群”,即可解决该问题。


非常感谢。这确实是我所需要的全部内容。仪表板随即显示它已经立即可用(不会挂起),kubectl也按预期工作。 - charlie arehart

1

为了将来参考,解决此问题的一种解决方法可能是删除C:/ProgramData/DockerDesktop/pki文件夹。


这个 Github 的回答也提到了:https://github.com/docker/for-win/issues/3769#issuecomment-486046718 - 没有必要 "删除所有数据",也不必要 "重置"。删除 pki 文件夹并不会销毁数据,并且这种方法已经解决了我的问题。 - Xavi Montero

1

在我的情况下,我的 kubectl 上下文设置为 AWS EKS。

  1. 一旦我将当前的 kubectl 上下文重置为 docker kubectl config use-context docker-desktop
  2. 重新启动 Docker Desktop
  3. 使用按钮重置 Kubernetes 集群,它就开始了 - 所有都是超级绿色的

enter image description here


0
在我的情况下,问题出在我手动编辑的~/.kube/config文件上,以添加更多的k8s上下文。
运行以下命令验证您的配置文件: kubectl config view
$ kubectl config view
error: error loading config file "~\.kube\config": yaml: line 88: found a tab character that violates indentation

修复您看到的错误,然后重试。


0
在我的情况下,我无法ping通Kubernetes,所以:
  1. 在命令行中尝试使用ping kubernetes.docker.internal
  2. 如果你无法ping通,似乎你有同样的问题。
  3. 为了解决这个问题,打开hosts文件(c:\windows\system32\drivers\etc\hosts),并在文件末尾添加一行:
    127.0.0.1 kubernetes.docker.internal
  4. 现在应该可以工作了)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接