“Kubernetes 正在启动 .....” windows 10 上的永远错误

" Kubernetes is starting ....." forever error on windows 10

我的 windows 10 机器上有一个 kubernetes 单节点集群。由于一些错误,我不得不重新安装 Docker Desktop,此后 kubernetes 安装失败,而 docker 安装成功。所有尝试解决例如删除 .kube 目录中的 config 文件并完全重新安装失败。有关详细信息,请参见附图。安装的 docker 版本是 Docker version 18.09.2, build 6247962。所有在线搜索努力都不会产生可能的解决方案。我将不胜感激指向解决方案或绕行的指针。

我将从分析 Kubernetes 系统容器的日志开始。

关于如何操作请参考 this Whosebug 上的回答。

我建议您使用命令检查 运行 Kubernetes 组件:docker ps -a --filter name=k8s 按照 Nepomucen 的建议。

然后,使用命令检查每个组件的日志:docker logs {container id from the previous command}。您可能会从日志中得到一些想法。

就我而言,它是- x509: certificate is valid for docker-for-desktop, kubernetes, kubernetes.default, kubernetes.default.svc, kubernetes.default.svc.cluster.local, host.docker.internal, 不是vm.docker.internal

所以,我尝试了此 link 中建议的解决方案,它对我有用

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

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

在我的例子中,系统容器没有创建,我在日志中得到的只是从 kubernetes 返回的 EOF,此时系统容器应该被创建。

经过调查,有删除.kube和config,pki之类的解决方案。我还调查了网络设置和公司政策、DNS 等是否会产生影响。一切都是部分可行的,但 none 提供了解决方案。

唯一可行的解​​决方案是卸载并安装最新的稳定 Docker 桌面。所以,我的理解是,随着时间的推移,这个 docker 设置有很多升级,一些配置或安装的一部分造成了混乱并且无法恢复 kubernetes setup/first 启动。

我遇到了两种错误

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

我终于按照以下项目的建议解决了这个问题, https://github.com/AliyunContainerService/k8s-for-docker-desktop/ 照它说的做,如果不行, 删除 ~/.kube 和 ~/Library/Group\ Containers/group.com.docker/pki 目录,然后重新启动 docker 桌面并等待 5 分钟。 Kubernetes状态最终是运行

对于任何遇到这个问题的人,对我有用的是以下内容:

  1. 停止Docker
  2. kubernetes.docker.internal 添加到名称 NO PROXY (**)
  3. 下的 Windows 环境变量列表
  4. 将 docker 重置为默认设置
  5. 关闭再重新打开
  6. 启用 Kubernetes

*我在 github 上遵循了这个问题的步骤:https://github.com/docker/for-win/issues/6627#issuecomment-637713206。你可以在那里找到更多的解释,但主要是 windows 需要让 kubernetes 'bypass' 它的代理。

Some clients support the no_proxy environment variable that specifies a set of domains for which the proxy should not be consulted

**要添加 windows 环境变量,请在 windows 搜索中键入 environment 并打开 'Edit the system environment variables' 或直接从控制面板打开它。单击 environment variables 按钮并添加一个新的到 system variables

我遇到了同样的问题..

I had deleted the .kube folder located in the user's home directory (C:\Users\mani\.kube)

为我解决了问题...

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

就我而言,我将 kubectl 上下文设置为 AWS EKS。

  1. 一旦我将当前的 kubectl 上下文重置为 docker kubectl config use-context docker-desktop
  2. 重新启动 Docker 桌面
  3. 使用按钮重置 Kubernetes 集群,它已启动 - 所有 supergreen

好的,我终于在我的 kube 中找到了问题。

看来我的主机文件是无效的,无法重现,但你可以休假的步骤:

  1. 打开命令行并尝试 ping kubernetes.docker.internal,这是 docker 添加到主机文件的 k8s ip。

  2. 如果无法 ping (127.0.0.1),请保存主机文件副本 (c:\windows\system32\drivers\etc\host) 并尝试 edit/remove docker 评论“ # 添加 Docker Desktop" 等

  3. ping通docker就可以得到配置的ip

注意:在 .kube\config 中,您可以在“server:”键下看到 IP。

  1. 您可以在 DDfW 图像选项卡中看到服务器开始工作(您将看到图像弹出和总大小发生变化。如果没有工作,请尝试重新启动 docker 以默认出厂设置重新安装等。

就我而言,我必须完全卸载并重新安装 Linux 的 Windows 子系统。

所以:

  1. 卸载 Docker 桌面。 (我还 deleted/renamed 所有配置数据文件夹)
  2. 卸载 WSL。 (最后一步是取消选中“打开和关闭 Windows 功能”中的“Windows Linux 的子系统”条目)
  3. 重启电脑。
  4. 重新安装 WSL。 (包括另一次重启)
  5. 重新安装 Docker 桌面。

我可能不需要每一步,但至少在我的情况下需要重新安装 WSL。 (我做了完整的 Docker 桌面重新安装,但这还不够)

对于那些在 C:/ProgramData/DockerDesktop 中没有找到 pki 文件夹的人,您可以在这个位置找到它:

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

删掉看看行不行。还要确保删除 .kube 文件夹

就我而言,我无法 ping 通 Kubernetes,因此:

  1. 在命令行中尝试 ping kubernetes.docker.internal
  2. 如果无法 ping 通,则说明您遇到了同样的问题。
  3. 要修复它,请打开主机文件 (c:\windows\system32\drivers\etc\hosts) 并在文件末尾添加一行:
    127.0.0.1 kubernetes.docker.internal
  4. 现在应该可以了)