Kubernetes拨号tcp myIP:10250:连接:无法路由到主机

5

我有一个带有1个主节点和3个工作节点的Kubernetes集群。

使用kubespray安装了calico v3.7.3 kubernetes v1.16.0。https://github.com/kubernetes-sigs/kubespray

在此之前,我通常可以无问题地部署所有Pod。

但现在我无法启动一些Pod(Ceph):

kubectl get all --namespace=ceph
NAME                                 READY   STATUS             RESTARTS   AGE
pod/ceph-cephfs-test                 0/1     Pending            0          162m
pod/ceph-mds-665d849f4f-fzzwb        0/1     Pending            0          162m
pod/ceph-mon-744f6dc9d6-jtbgk        0/1     CrashLoopBackOff   24         162m
pod/ceph-mon-744f6dc9d6-mqwgb        0/1     CrashLoopBackOff   24         162m
pod/ceph-mon-744f6dc9d6-zthpv        0/1     CrashLoopBackOff   24         162m
pod/ceph-mon-check-6f474c97f-gjr9f   1/1     Running            0          162m


NAME               TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
service/ceph-mon   ClusterIP   None         <none>        6789/TCP   162m

NAME                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR       AGE
daemonset.apps/ceph-osd   0         0         0       0            0           node-type=storage   162m

NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ceph-mds         0/1     1            0           162m
deployment.apps/ceph-mon         0/3     3            0           162m
deployment.apps/ceph-mon-check   1/1     1            1           162m

NAME                                       DESIRED   CURRENT   READY   AGE
replicaset.apps/ceph-mds-665d849f4f        1         1         0       162m
replicaset.apps/ceph-mon-744f6dc9d6        3         3         0       162m
replicaset.apps/ceph-mon-check-6f474c97f   1         1         1       162m

但是另一个是可以的:

kubectl get pods -n kube-system
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-6d57b44787-xlj89   1/1     Running   19         24d
calico-node-dwm47                          1/1     Running   310        19d
calico-node-hhgzk                          1/1     Running   15         24d
calico-node-tk4mp                          1/1     Running   309        19d
calico-node-w7zvs                          1/1     Running   312        19d
coredns-74c9d4d795-jrxjn                   1/1     Running   0          2d23h
coredns-74c9d4d795-psf2v                   1/1     Running   2          18d
dns-autoscaler-7d95989447-7kqsn            1/1     Running   10         24d
kube-apiserver-master                      1/1     Running   4          24d
kube-controller-manager-master             1/1     Running   3          24d
kube-proxy-9bt8m                           1/1     Running   2          19d
kube-proxy-cbrcl                           1/1     Running   4          19d
kube-proxy-stj5g                           1/1     Running   0          19d
kube-proxy-zql86                           1/1     Running   0          19d
kube-scheduler-master                      1/1     Running   3          24d
kubernetes-dashboard-7c547b4c64-6skc7      1/1     Running   591        24d
nginx-proxy-worker1                        1/1     Running   2          19d
nginx-proxy-worker2                        1/1     Running   0          19d
nginx-proxy-worker3                        1/1     Running   0          19d
nodelocaldns-6t92x                         1/1     Running   2          19d
nodelocaldns-kgm4t                         1/1     Running   0          19d
nodelocaldns-xl8zg                         1/1     Running   0          19d
nodelocaldns-xwlwk                         1/1     Running   12         24d
tiller-deploy-8557598fbc-7f2w6             1/1     Running   0          131m

我使用的是CentOS 7:

NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

错误日志:
Get https://10.2.67.203:10250/containerLogs/ceph/ceph-mon-744f6dc9d6-mqwgb/ceph-mon?tailLines=5000&timestamps=true: dial tcp 10.2.67.203:10250: connect: no route to host

也许有人遇到过这个问题,可以帮忙吗?我会提供任何额外信息。
挂起的Pod日志:
警告 FailedScheduling 98秒(3小时1分钟内125次)default-scheduler 0/4个节点可用:4个节点不符合节点选择器。

我会更加关注未处理的Pod。可能这就是为什么其他的Pod会崩溃的原因。 - suren
警告 调度失败 5分钟10秒 (3小时内x119次) 默认调度器 0/4个节点可用:4个节点未匹配节点选择器。 - cryptoparty
你的yaml文件中有一个节点选择器,但是没有任何节点被标记为该选择器,因此调度程序无法将Pod调度到任何节点上。获取yaml文件,获取节点选择器并执行kubectl label node NODE key=value命令。其中key=value是你的节点选择器。 - suren
听起来像是Pod网络错误。我不知道为什么。2379是etcd,但我无法将其与错误联系起来。如果你检查calico的日志,一切似乎都正常吗?防火墙设置正确吗? - suren
calico v3.7.3,kubernetes 1.16已从kubespray https://github.com/kubernetes-sigs/kubespray安装。 - cryptoparty
显示剩余7条评论
2个回答

10

看起来防火墙正在阻止来自节点 10.2.67.203 的端口 10250 的入站流量。

您可以通过运行以下命令来打开它(我假设已安装 firewalld 或者您可以运行等效防火墙模块的命令):

sudo firewall-cmd --add-port=10250/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all  # you should see that port `10250` is updated

4
简而言之: 看起来你的集群本身存在问题,需要先修复它,然后再查看 Ceph 的具体情况。

Get https://10.2.67.203:10250/containerLogs/ceph/ceph-mon-744f6dc9d6-mqwgb/ceph-mon?tailLines=5000&timestamps=true: dial tcp 10.2.67.203:10250: connect: no route to host

10250 是 Kubernetes API 服务器用于连接节点的 Kubelet 来检索日志的端口。

此错误指示 Kubernetes API 服务器无法访问该节点。这与容器、Pod 或甚至 CNI 网络没有关系。no route to host 表示以下情况之一:

  1. 主机无法使用
  2. 发生了网络分割
  3. Kubelet 无法回答 API 服务器

在解决 Ceph Pod 问题之前,应该先调查为什么 API 服务器无法访问 Kubelet。

当你解决了潜在的网络连接问题后,应该解决 Calico Pod 的崩溃循环问题(可以通过运行 kubectl logs -n kube-system calico-node-dwm47 -p 查看先前执行的容器日志)。

一旦你解决了底层网络和 Pod 网络问题,就应该解决 Kubernetes 仪表板的崩溃循环问题,最后开始调查为什么部署 Ceph 时出现问题。


kubectl get pod -ns kube-system calico-node-dwm47 -p calico-node-dwm47 1/1 Running 311 60d and for a long time there were no logs with errors in api logs. But it was http: TLS handshake error from 10.2.67.26:49312: remote error: tls: bad certificate\n - cryptoparty
我得到了 curl -X GET https://10.2.67.201:6443/healthz -k ok - cryptoparty
请返回以下端口的翻译内容:``curl -v -i 10.2.67.201:10250
  • 准备连接到 10.2.67.201 端口 10250 (#0)
  • 正在尝试连接 10.2.67.201...
  • 已连接到 10.2.67.201 (10.2.67.201) 端口 10250 (#0)
    GET / HTTP/1.1``
- cryptoparty
抱歉,我给了你错误的命令,你应该使用 kubectl logs -p 而不是 kubectl get pods - chaosaffe
除了检查kube-apiserver日志之外,您还应该检查受影响主机上的kubelet日志。 - chaosaffe
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接