Kubernetes访问报错: No route to host

背景

搭建完集群式k8s后,各个节点都已经Ready,但是在创建echo服务进行访问时报错:No route to host

解决

参考链接:https://imlc.me/v/zh-cn/kuai-su-jie-jue-kubernetes-no-route-to-host

(一)集群式部署

[root@k8s-master kong]# systemctl stop kubelet
[root@k8s-master kong]# systemctl stop docker
[root@k8s-master kong]# iptables --flush
[root@k8s-master kong]# iptables -tnat --flush
[root@k8s-master kong]# systemctl start kubelet
[root@k8s-master kong]# systemctl start docker

(二)Microk8s部署

[root@k8s-master kong]# microk8s stop
[root@k8s-master kong]# systemctl stop docker
[root@k8s-master kong]# iptables --flush
[root@k8s-master kong]# iptables -tnat --flush
[root@k8s-master kong]# systemctl start docker
[root@k8s-master kong]# microk8s start

测试

[root@k8s-master kong]# kubectl get svc -n demo -o wide
NAME   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE   SELECTOR
echo   ClusterIP   10.105.104.233   <none>        8080/TCP,80/TCP   26m   app=echo
[root@k8s-master kong]# curl http://10.105.104.233


Hostname: echo-8467949b65-mt4vk

Pod Information:
        node name:      k8s-worker-1
        pod name:       echo-8467949b65-mt4vk
        pod namespace:  demo
        pod IP: 10.36.0.0

Server values:
        server_version=nginx: 1.13.3 - lua: 10008

Request Information:
        client_address=10.32.0.1
        method=GET
        real path=/
        query=
        request_version=1.1
        request_scheme=http
        request_uri=http://10.105.104.233:8080/

Request Headers:
        accept=*/*
        host=10.105.104.233
        user-agent=curl/7.29.0

Request Body:
        -no body in request-

 

`psycopg2` 报错显示 `no route to host` 表示 PostgreSQL 数据库服务器无法通过网络访问。这种情况通常是由以下几个原因之一引起的: ### 可能原因及解决办法 #### 1. **数据库服务未运行** - 确保目标机器上的 PostgreSQL 数据库服务正在运行。 ```bash sudo systemctl status postgresql ``` - 如果服务未启动,则可以尝试手动启动它: ```bash sudo systemctl start postgresql ``` #### 2. **主机名/IP 地址错误** - 检查你在连接字符串中指定的主机名或 IP 是否正确。 - 使用正确的地址重新构建连接字符串。 #### 3. **防火墙阻止了连接** - 防火墙规则可能会限制对数据库端口(默认为5432)的访问。 - 临时关闭防火墙测试是否解决问题: ```bash sudo ufw disable # 或者对于 iptables: sudo iptables -F ``` - 排除问题后再配置允许特定端口的规则。 #### 4. **PostgreSQL 的监听设置不对** - 默认情况下,PostgreSQL 只会监听本地回环地址 (`localhost`) 而不是所有网卡。 - 编辑 PostgreSQL 的主配置文件 `/etc/postgresql/<version>/main/postgresql.conf` 并修改下面这一行: ``` listen_addresses = '*' ``` - 修改完成后重启数据库服务以应用更改。 #### 5. **pg_hba.conf 文件未配置远程访问权限** - 查看并编辑用户认证相关的配置文件 `/etc/postgresql/<version>/main/pg_hba.conf` ,添加类似以下内容来允许来自某些IP范围的客户端请求: ``` host all all <client_ip_address>/32 md5 ``` - 替换 `<client_ip_address>` 成实际需要授权的客户机地址段,并保存退出再重启服务生效。 --- 如果以上步骤都没有找到解决方案,那么可能是更深层次的问题如路由表、DNS解析等影响到了正常的网络连通性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值