kubectl命令报错:Unable to connect to the server: dial tcp XXX:16443: connect: no route to host

文章目录

      • 前提
      • 问题说明
      • 分析原因
      • 解决问题
      • 另一中错误:Unable to connect to the server: dial tcp 123.56.91.155:6443: i/o timeout

前提

架构:keepalived+haproxy+kubernetes

问题说明

kubernetes集群好久不用了,今天打开集群执行一个kubectl get nodes命令,报错如下:
Unable to connect to the server: dial tcp 192.168.2.XXX:16443: connect: no route to host

分析原因

出现这个问题几种原因,

  1. 集群坏了:如果报错的IP是master1的节点IP或虚拟IP(vip)加16443端口号,执行kubectl命令还报上面的错误,说明集群坏了,需要逐步排查原因。
  2. /root/.kube/config中的IP地址错误:如果错误中的IP地址不是master1的节点IP或虚拟IP(vip)加16443端口号,需要修改配置文件中的IP。一般改为虚拟IP(vip)+16443端口号。
  3. haproxy:由于haproxy配置的是监听16443端口,也是集群的入口。因为报错的端口号是16443,所以要检查是否是haproxy的IP问题,如果是的话要修改haproxy配置文件,然后重启haproxysystemctl restart haproxy

解决问题

经排查,我的问题属于第二种,因为报错的意思是没有找不到192.168.2.XXX:16443这个路由,于是检查config文件:

vim /root/.kube/config

查看IP是否正确,经检查,我虚拟IP为:192.168.2.249,而这里显然不是,将IP修改为192.168.2.249:16443
kubectl命令报错:Unable to connect to the server: dial tcp XXX:16443: connect: no route to host_第1张图片

保存退出后再次查看节点状态,kubectl命令就可以正常使用了。
在这里插入图片描述

另一中错误:Unable to connect to the server: dial tcp 123.56.91.155:6443: i/o timeout

Unable to connect to the server: dial tcp 123.56.91.155:6443: i/o timeout
刚开始爆出的错误是这个,一看这个IP就不是我当初创建集群时的IP,而是一个阿里云公网IP,其实进入config文件中修改成自己集群的IP就可以了。

你可能感兴趣的:(k8s,tcp/ip,运维,kubernetes)