【问题标题】:How to fix issue of 'Unable to connect to the server: EOF' Kubernetes - Kubectl如何解决“无法连接到服务器:EOF”Kubernetes 的问题 - Kubectl
【发布时间】:2018-08-02 08:34:51
【问题描述】:

当我尝试任何 kubectl 命令时,它总是返回:

Unable to connect to the server: EOF

我遵循了这些教程:

https://kubernetes.io/docs/tasks/tools/install-kubectl/

https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/

但他们没有帮助我。根据第一个链接,kubectl配置默认位于

~/.kube/config

但是在那条路上我什么都没有。不知道是不是这个问题。

另一件事是当我尝试检查 kubectl 配置时:

M:.kube candres$ kubectl cluster-info
Kubernetes master is running at http://localhost:8080

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Unable to connect to the server: EOF
M:.kube candres$ kubectl cluster-info dump
Unable to connect to the server: EOF

我安装的版本是:

Kubernetes - kubectl

M:.kube candres$ kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.3", GitCommit:"X", GitTreeState:"clean", BuildDate:"2018-02-09T21:51:06Z", GoVersion:"go1.9.4", Compiler:"gc", Platform:"darwin/amd64"}
Unable to connect to the server: EOF

迷你酷贝

M:.kube candres$ minikube version
minikube version: v0.25.0

码头工人:

M:.kube candres$ docker version
Client:
 Version:   17.12.0-ce
 API version:   1.35
 Go version:    go1.9.2
 Git commit:    X
 Built: Wed Dec 27 20:03:51 2017
 OS/Arch:   darwin/amd64

Server:
 Engine:
  Version:  17.12.0-ce
  API version:  1.35 (minimum version 1.12)
  Go version:   go1.9.2
  Git commit:   X
  Built:    Wed Dec 27 20:12:29 2017
  OS/Arch:  linux/amd64
  Experimental: true

有谁知道如何解决这个问题?

【问题讨论】:

  • 嗨@Carlos,kubectl cluster-info 的一个命令正在工作,这是一种非常奇怪的行为。但是,其他人没有工作。您能否运行以下命令kubectl config view,它将列出所有集群和上下文。
  • btw,API Server 的端口号是 8443 或 443。为什么端口号是 8080?
  • 嗨@SureshVishnoi!当我运行该命令时,返回:M:.kube candres$ kubectl config view apiVersion: v1 clusters: [] contexts: [] current-context: "" kind: Config preferences: {} users: [] 关于端口,我不知道为什么要使用端口 8080!
  • 表示kubectl不知道k8s API server。如果它不知道 api 服务器。它什么也做不了
  • 当您使用 minikube 时,据我所知,Minikube 会自动配置 kubeconfig 文件。所以你可以重新启动 minikube。您可以运行minikube status 来验证它。

标签: kubernetes kubectl minikube


【解决方案1】:

Minikube 启动后会自动配置kubectl

minikube start
Starting local Kubernetes cluster...
Kubernetes is available at https://192.168.99.100:8443.
Kubectl is now configured to use the cluster.

您可以使用以下命令验证和验证集群和上下文。

kubectl config view

【讨论】:

    【解决方案2】:

    我也有这个问题。请务必检查minikube 生成的配置文件。该文件很可能在~/.kube/config 中找到。确保您在当前使用的上下文中引用了正确的集群名称。您可以通过kubectl get current-context 查看当前使用的上下文。重要的是你明白为什么你会收到这个错误,正如@Suresh Vishnoi 所说,kubectl 不知道k8s api-server。

    【讨论】:

    • 在 2020 年 12 月 3 日写这篇文章,同时拿起 Kubernetes 和 kubectl get current-context 不起作用。改为使用kubectl config current-context 查看当前上下文
    【解决方案3】:

    只需将 Kubectl 版本更新到最新版本即可解决我的问题。

    【讨论】:

    • 我认为这取决于集群版本?
    • 工作。下载kubectl.exe v1.23.0(在我有v1.17.4之前)然后在powershell中再次出现熟悉的https://microsoft.com/devicelogin身份验证过程。
    【解决方案4】:

    如果您收到这样的消息:

    您似乎正在使用代理,但您的 NO_PROXY 环境没有 包括 minikube IP (www.xxx.yyy.zzz)。

    然后将您的环境变量 NO_PROXY 设置为运行 kubectl 之前给出的地址。这可能在某处可配置,但这是一个简短的快速解决方案。

    【讨论】:

    • 这是我的重点。这是我在 ~/.zshrc 中的配置: ``` bash export http_proxy=192.168.168.168:1087;导出 https_proxy=192.168.168.168:1087;导出 no_proxy="10.0.0.0/8,localhost,127.0.0.1,192.168.0.0/16" ``
    【解决方案5】:
    reset kubeadm via force
    
    reset kubeadm -f
    

    然后 再次复制配置文件

    cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    chown $(id -u):$(id -g) $HOME/.kube/config
    

    终于

    kubectl init
    

    【讨论】:

      【解决方案6】:

      这里是我的解决方案的步骤

      1. 安装 minikube:

      brew install minikube

      1. 启动 minikube

      minikube start

      1. 再次检查并 ✅

      kubectl version --short

      Client Version: v1.16.6-beta.0

      Server Version: v1.22.2

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-23
        • 1970-01-01
        • 2018-03-19
        相关资源
        最近更新 更多