kubectl get 报错:Unable to connect to the server: dial tcp 10.20.2.224:6443: connect: no route to host

具体输出如下:

场景:高可用集群两个 master 节点,当我执行:kubectl get nodes,出现如下错误:
Unable to connect to the server: dial tcp 10.20.2.224:6443: connect: no route to host

原因加入第二个 Master 节点时比较急,并没有执行:

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
执行完毕即可。


上面是刚学习很久之前写的了,再补充一点:上面的场景是,两个 master 节点,当第二个出现以上问题可以解决。
对于不是高可用集群只有一个 master 节点的集群,如果 node 抛出这样的问题是很正常也是非常合理的,除非你把 .kube 目录从 master copy 一份到其他 node
.

### 解决 'no route to host' 错误 当遇到 `dial tcp: lookup on no route to host` 的错误提示时,这通常意味着客户端尝试连接的目标主机不可达。对于 Kubernetes API Server (10.10.10.120:6443) 出现此类问题的情况,可以从以下几个方面进行排查: #### 1. 验证网络连通性 确保本地机器能够到达目标 IP 地址 10.10.10.120。可以使用 ping 或者 traceroute 工具来测试。 ```bash ping 10.10.10.120 traceroute 10.10.10.120 ``` 如果这些命令返回失败,则说明存在路由配置不当或防火墙阻止等问题[^1]。 #### 2. 检查防火墙设置 确认源端与目的端之间的任何中间设备上的防火墙规则允许 TCP 流量通过端口 6443。可以通过临时关闭防火墙来进行验证(注意安全风险),或者添加特定的放行规则。 ```bash sudo ufw allow 6443/tcp # 对于 UFW 用户空间工具 firewall-cmd --add-port=6443/tcp --permanent # 对于 firewalld ``` #### 3. DNS解析检查 虽然题目中的情况看起来像是直接指定了 IP 地址而不是域名,但如果涉及到其他服务发现机制的话,仍然要确保DNS正常工作并能正确解析相关名称。 #### 4. 容器平台内部通信状况评估 如果是容器化环境中部署的应用程序遇到了这个问题,还需要考虑集群内各节点间的网络插件是否安装配置得当以及CNI组件的工作状态如何。 #### 5. 使用 telnet 或 curl 命令进一步诊断 可以直接利用简单的命令行工具像telnet去探测远程服务器上指定的服务端口是否开放;也可以借助curl发起HTTP请求查看响应结果。 ```bash telnet 10.10.10.120 6443 curl https://10.10.10.120:6443/version --insecure ``` 以上方法可以帮助定位具体原因所在,并采取相应措施解决问题。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值