【问题标题】:Error from server: error dialing backend: dial tcp <datanode-ip>: i/o timeout来自服务器的错误:错误拨号后端:dial tcp <datanode-ip>: i/o timeout
【发布时间】:2021-01-23 03:32:16
【问题描述】:

我最近遇到了kubernetes本地集群的问题。当我使用命令kubectl exec -it curl-- bash在名为'curl'的pod上运行一些命令时,我得到了一些错误: error info

这里是节点的信息: nodes info

pod 'curl' 在 datanode-2 上运行良好,kubelet 正在侦听端口 10250,但我不知道为什么会收到错误信息,这是 `kubectl describe po curl': curl pod describe

这里是命名空间 kube-system 中的 Pod,CNI 是 flannel: enter image description here

在其他pod上运行kubectl exec是一样的(在datanode-1上也是一样),如何解决?

【问题讨论】:

  • 1)您是否正确配置了防火墙? stackoverflow.com/a/51395960/9929015
  • 2) kubelet 日志中有什么奇怪的条目吗?
  • 我什至没有安装防火墙。我认为问题不是防火墙,因为几天前cluser运行良好。昨天,我发现只有master无法连接到节点通过k8s的网络,但是datanode-1和datanode-2可以很好的互相连接。
  • 嗨 Vitalii,我将日志的屏幕截图发布到答案
  • 你还有这个问题吗?

标签: kubernetes kubelet


【解决方案1】:

此错误可能与 kube-apiserver.service(在控制节点上)与 kubelet.service(默认为 10250 端口)的通信有关

要进行故障排除,您可能需要通过 ssh 进入控制节点并

telnet hostname(workernode) 10250
telnet privateip(workernode) 1025

如果两个 telnet 测试均失败,则可能与工作节点上的防火墙有关。所以你应该在工作节点中打开端口 10250 。检查 kubelet 是否在此端口上运行

lsof -i :10250

如果 telnet 测试使用主机名或公共 ip 失败,但使用私有 ip 。您应该将标志添加到 kube-apiserver(位于 /etc/systemd/system/kube-apiserver.service)的单元服务文件中

--kubelet-preferred-address-types InternalIP

保存,然后

systemctl daemon-reload
systemctl restart kube-apiserver 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-18
    • 2021-06-11
    • 2021-02-02
    • 1970-01-01
    • 2021-09-24
    • 2021-11-22
    • 2020-01-11
    • 1970-01-01
    相关资源
    最近更新 更多