Docker for Desktop Kubernetes 无法连接到服务器:拨打 tcp [::1]:6445

Docker for Desktop Kubernetes Unable to connect to the server: dial tcp [::1]:6445

我在 Windows 10 Professional 和 Hyper-V 上使用 Docker for Desktop,我也没有使用 minikube。我已经通过 Docker for Desktop 安装了 Kubernetes 集群,如下图:

说明Kubernetes已经安装成功,运行ning。

当我运行以下命令时:

kubectl config view

我得到以下输出:

apiVersion: v1
clusters:
- cluster:
  insecure-skip-tls-verify: true
  server: https://localhost:6445
  name: docker-for-desktop-cluster
contexts:
 - context:
   cluster: docker-for-desktop-cluster
   user: docker-for-desktop
   name: docker-for-desktop
   current-context: docker-for-desktop
kind: Config
preferences: {}
users:
- name: docker-for-desktop
user:
  client-certificate-data: REDACTED
  client-key-data: REDACTED

然而当我 运行

kubectl cluster-info

我收到以下错误:

Unable to connect to the server: dial tcp [::1]:6445: connectex: No connection could be made because the target machine actively refused it.

好像是网络问题,不知道怎么解决。

我知道这是一个老问题,但以下内容帮助我解决了类似的问题。根本原因是我之前安装了 minikube 并且它被用作我的默认上下文。 我收到以下错误:

Unable to connect to the server: dial tcp 192.168.1.8:8443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

在power-shell运行下面命令:

> kubectl config get-contexts
CURRENT   NAME                 CLUSTER          AUTHINFO         NAMESPACE
      docker-desktop       docker-desktop   docker-desktop
      docker-for-desktop   docker-desktop   docker-desktop
*     minikube             minikube         minikube

这将列出所有上下文并查看是否有多个。如果您过去安装过 minikube,则会显示一个 * 标记作为当前选择的默认上下文。您可以将其更改为指向 docker-desktop 上下文,如下所示:

> kubectl config use-context docker-desktop

运行 get-contexts 命令再次验证 * 标记。

现在,下面的命令应该可以工作了:

> kubectl get pods

发布对这个非常老的问题的回复,因为我正在寻找解决方案,后来发现我的问题有不同的原因,而且解决方案很简单。

  1. 原因是 $HOME$/.kube 目录中缺少配置文件

  2. Docker 桌面的简单重启恢复了一些默认值的文件,一切都恢复正常。

旁注:在我将 Docker 桌面安装升级到最新版本后(当我收到可用更新弹出窗口时),问题开始了。我还应该提到集群停止工作,我不得不手动删除 Docker 桌面并重新安装最新版本(这是问题发生之前的故事)。