【发布时间】:2021-08-25 10:08:05
【问题描述】:
我面临一个特殊的情况,无法从网络上找到太多帮助。 我有一个容器(基于 alpine 映像)在 Centos7 主机上以主机网络模式运行,这实际上意味着它与主机共享网络堆栈、/etc/hosts 和 /etc/resolv.conf。
尝试连接到我们组织网络中的远程计算机 (UB1804-MN1-131)(因此不需要代理)。连接调用是 grpc.dial(hostname:port, ..) 调用。 我不断收到以下错误:
code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp: i/o timeout"
这种行为本身并不一致。例如有时重试几次后连接成功,有时它只是拒绝连接
从主机本身尝试连接时,同一台远程计算机没有任何问题。
非常感谢您在寻找根本原因方面的任何帮助。作为参考,共享 eth 详细信息、主机和解析详细信息(出于安全原因编辑了其中的一些值):
[user@HOST-21343-135 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:9e:7c:15 brd ff:ff:ff:ff:ff:ff
inet 172.17.65.135/16 brd 172.17.255.255 scope global ens192
valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:50:56:9e:12:a3 brd ff:ff:ff:ff:ff:ff
4: ens256: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:50:56:9e:23:0c brd ff:ff:ff:ff:ff:ff
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:b0:fa:05:37 brd ff:ff:ff:ff:ff:ff
inet 10.190.64.1/25 scope global docker0
valid_lft forever preferred_lft forever
[user@HOST-21343-135 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 HOST-21343-135
172.17.65.131 UB1804-MN1-131
[root@ATLAS-21343-135 ~]# cat /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
nameserver 14.110.135.81
nameserver 14.110.135.82
nameserver 14.110.135.83
我已经验证了以上所有数据也是容器共享的。
【问题讨论】:
-
为了帮助隔离问题,考虑使用 (a) 不同的发行版来构建客户端容器(可能是 Debian 而不是 Alpine;(b) gRPCurl 有一个容器版本(也基于 Alpine):@ 987654321@
标签: docker networking containers grpc alpine