【问题标题】:The connection to the server 10.117.xxx.xxx:6443 was refused - did you specify the right host or port?与服务器 10.117.xxx.xxx:6443 的连接被拒绝 - 您是否指定了正确的主机或端口?
【发布时间】:2019-07-17 23:10:03
【问题描述】:

我一直在尝试按照以下教程运行一个基本的 Kubernetes 集群https://kubernetes.io/docs/setup/independent/install-kubeadm/

我从最新的 ubuntu 16.04 系统开始并安装了 docker。

wget -qO- https://get.docker.com/ | sed 's/docker-ce/docker-ce=18.06.3~ce~3-0~ubuntu/' | sh

之后我安装了 kubelet / Kubeadm 和 kubectl 模块

apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl

确保交换等已关闭sudo swapoff -a

使用sudo kubeadm init 执行初始化

[init] Using Kubernetes version: v1.13.3
...
To start using your cluster
...
mkdir ...
You can now join any ...
...

我制作 .kube 文件夹并进行配置

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

kubectl cluster-info 然后显示

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
The connection to the server 10.117.xxx.xxx:6443 was refused - did you specify the right host or port?

在尝试了几次之后,我收到了:

sudo kubectl cluster-info
Kubernetes master is running at https://10.117.xxx.xxx:6443
KubeDNS is running at https://10.117.xxx.xxx:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

但是一秒钟后它又回到了权限被拒绝

sudo kubectl cluster-info
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
The connection to the server 10.117.xxx.xxx:6443 was refused - did you specify the right host or port?

我尝试使用和不使用 sudo... 并且 sudo kubectl get nodes 也拒绝工作。

The connection to the server 10.117.xxx.xxx:6443 was refused - did you specify the right host or port?

我错过了什么无法连接?

ping 10.117.xxx.xxx 可以正常工作,甚至 ssh 到此地址也可以正常工作并且是同一台服务器。

编辑

sudo systemctl restart kubelet.service 显示集群上线,但由于某种原因在几分钟内下线。

kubectl cluster-info
Kubernetes master is running at https://10.117.0.47:6443
KubeDNS is running at https://10.117.0.47:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
...
kubectl cluster-info

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
The connection to the server 10.117.0.47:6443 was refused - did you specify the right host or port?

edit2

在进行完全重置并使用以下初始化后...

sudo kubeadm init --pod-network-cidr=10.244.0.0/16 

紧随其后

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

允许我安装 pod 网络插件,但只是短暂的。

clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.extensions/kube-flannel-ds-amd64 created
daemonset.extensions/kube-flannel-ds-arm64 created
daemonset.extensions/kube-flannel-ds-arm created
daemonset.extensions/kube-flannel-ds-ppc64le created
daemonset.extensions/kube-flannel-ds-s390x created
kubectl cluster-info
Kubernetes master is running at https://10.117.xxx.xxx:6443
KubeDNS is running at https://10.117.xxx.xxx:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

➜  ~ kubectl cluster-info

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
The connection to the server 10.117.xxx.xxx:6443 was refused - did you specify the right host or port?

edit3

删除所有 docker 映像、容器等...然后使用 sudo systemctl restart kubelet.service 重新启动似乎可以解决几分钟的问题,但随后所有 docker 容器都被杀死并删除,没有任何信号。我如何查看这些容器的日志记录以找出它们被杀死的原因?

https://pastebin.com/wWSWXM31日志文件

【问题讨论】:

  • 检查这个以获得logs

标签: ubuntu kubernetes


【解决方案1】:

我不知道“Kubernetes”的具体细节,但我可以解释您所看到的。

连接被拒绝不是权限被拒绝。这意味着:“我联系了该 IP 地址和端口的服务器,但该端口上没有运行任何服务器。”

所以....您必须转到远程系统(您一直调用 10.117.xxx.xxx 的系统)并仔细检查服务器是否正在运行。以及在什么端口上。

例如,“netstat -a”工具将列出所有打开的端口和连接。您应该将侦听服务器视为

tcp        0      0 0.0.0.0:9090            0.0.0.0:*               LISTEN     

在我的情况下,它正在侦听端口 9090。您正在寻找一个 6443 的条目。它可能不存在,因为“连接被拒绝”已经告诉您了。您需要启动应该提供该服务的服务器进程并注意错误。如果您在终端上看不到 /var/log/syslog 中的错误,请检查它们。

【讨论】:

    【解决方案2】:

    重启后出现同样的错误。 swapoff -a 为我工作

    【讨论】:

      【解决方案3】:

      可能是控制节点上的 kube-apiserver 容器未启动或 docker 未启动。您可以通过这样做来模仿 6443 连接被拒绝:

      --来自控制节点:

      sudo systemctl stop docker

      kubectl 获取 pod

      --响应:

      与服务器 192.168.0.7:6443 的连接被拒绝 - 您是否指定了正确的主机或端口?

      找不到位于端口 6443 的 API……嗯……所以这表明此特定错误与 API 和运行它的 docker 容器有关。所以如果 docker 宕机了,或者任何阻止我访问 docker 的东西被中断,它就会抛出这种类型的错误。

      让我们恢复它:

      sudo systemctl start docker

      • 给它几分钟时间来启动所有的 kubernetes 系统容器,记住,控制节点上没有任何应用程序容器,通常只有 kube-system 的东西。

      • 这不会影响您的工作节点或它们上的容器,对他们来说,这就像与 api 断开连接,仅此而已,除非他们需要 api 的关键内容,否则它们将保持正常运行。

      kubectl 获取 pod

      --响应:

      名称就绪状态重新开始年龄 busybox 1/1 运行 0 42h

      【讨论】:

        猜你喜欢
        • 2020-02-25
        • 2022-10-13
        • 2022-11-17
        • 2019-11-06
        • 1970-01-01
        • 2018-12-03
        • 2019-09-25
        • 2021-03-16
        • 2018-12-09
        相关资源
        最近更新 更多