【问题标题】:The connection to the server localhost:8080 was refused与服务器 localhost:8080 的连接被拒绝
【发布时间】:2018-01-25 06:22:22
【问题描述】:

我能够在 Kubernetes 中将 2 个节点聚集在一起。主节点似乎运行良好,但在工作节点上运行任何命令都会导致错误:“与服务器 localhost:8080 的连接被拒绝 - 您是否指定了正确的主机或端口?”

从主节点(node1),

$ kubectl get nodes
NAME       STATUS    AGE       VERSION
node1       Ready     23h       v1.7.3
node2       Ready     23h       v1.7.3

从worker(节点2),

$ kubectl get nodes
The connection to the server localhost:8080 was refused - did you specify the right host or port?

$ telnet localhost 8080
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

$ ping localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.032 ms

我不确定如何解决此问题。任何帮助表示赞赏。

在执行时,“journalctl -xeu kubelet”我看到: “CNI 无法检索网络命名空间路径:找不到已终止容器的网络命名空间”,但这似乎与安装 pod 网络有关......由于上述错误,我无法做到。

谢谢!

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    要解决The connection to the server localhost:8080 was refused - did you specify the right host or port? 的问题,您可能缺少步骤。

    我的修复:

    在 MacOS 上,如果你用 brew 安装 K8s,你仍然需要brew install minikube,之后你应该运行minikube start。这将启动您的集群。

    运行命令kubectl cluster-info,您应该会得到类似以下的快乐路径响应:

    Kubernetes control plane is running at https://127.0.0.1:63000
    KubeDNS is running at https://127.0.0.1:63308/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    

    Kubernetes 安装步骤:https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/

    Minikube 文档:https://minikube.sigs.k8s.io/docs/start/

    【讨论】:

      【解决方案2】:

      作为提示,提示的消息表明它与网络有关。 因此,一个可能的答案也可能是,这对我的解决方案有效,是查看contextscontext 的关键cluster 值。

      我的错误是我在那里放置了错误的集群名称

      拥有适当的集群名称对于在各自的上下文中找到它至关重要,并且错误将会消失。

      【讨论】:

        【解决方案3】:

        执行以下命令后,这对我有用:

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

        【讨论】:

          【解决方案4】:

          从 master 你需要 ~/.kube/config 将此文件作为 kubectl 命令的参数传递。将配置文件复制到其他服务器或笔记本电脑,然后传递 kubectl 命令的参数

          例如:

          kubectl --kubeconfig=~/.kube/config

          【讨论】:

          • 这适用于每台可以访问网络的计算机,worker-nodes 没什么特别的。这应该被接受,因为worker-nodes 通常无法访问 kube-api 服务器。
          • 在工作节点中我们无法访问kube-api服务器那么如何在工作节点中安装网络服务?
          【解决方案5】:

          kubectlkube-apiserver 接口用于集群管理。该命令适用于主节点,因为这是 kube-apiserver 运行的地方。在工作节点上,只有kubeletkube-proxy 正在运行。

          事实上,kubectl 应该在客户端(例如笔记本电脑、台式机)上运行,而不是在 kubernetes 节点上。

          【讨论】:

          • 所以,kubeadm 应该在所有节点上,而 kubectl 应该在客户端系统上?那么我们如何将客户端 Kubectl 连接到 master 呢?通过,通过 ~/.kube/config?
          • kubeadm 我相信也在您的客户端计算机上运行,​​但我不熟悉它。 kubectl 绝对意味着要在客户端机器上运行。您是对的:在您的客户端计算机上配置 ~/.kube/config 以使 kubectl 正确连接到主节点。如果您使用配置更新您的问题,我可以为您提供帮助。
          • 谢谢。我能够以我认为目前还可以的方式配置集群。但是我今天在主节点本身上运行 kubectl 时遇到了同样的问题。直到昨天我都能运行 kubectl 命令,一切都很好。我在尝试不同的模板“种类”之间,在运行 ReplicationController 模板后,我开始遇到同样的错误:{code} 与服务器 10.XX.XX.XXX:6443 的连接被拒绝 - 你指定了正确的主机还是港口? {代码}
          • 也没有 ~/.kube/config 文件。我是不是系统配置错了?之前一切正常。我正在使用 Docker 1.12.6 运行 kubectl 版本 1.7.3。
          • 通过再次运行 kubectl init 绕过它。谢谢。
          猜你喜欢
          • 1970-01-01
          • 2020-06-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多