在端口9200上的localhost上运行一个ElasticSearch容器,但是在同一主机上的pod中,我无法 curl localhost端口9200
[root@jenkins ~]# netstat -tupln | grep 9200
tcp6 0 0 :::9200 :::* LISTEN 4148/docker-proxy
[jenkins@kb-s-9xttg agent]$ curl http://localhost:9200
curl: (7) Failed to connect to ::1: Network is unreachable
/etc/主机
# Kubernetes-managed hosts file.
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
192.168.255.23 kbs-9xttg
我可以 curl public_host_ip:9200
ElasticSearch容器不是由kubernetes管理的,而是在同一主机上运行的。
为什么豆荚不能和你说话 localhost:9200
或者 127.0.0.1:9200
?
1条答案
按热度按时间mf98qq941#
评论摘要:
如果您在pod中与localhost通信,那么您只与pod中的容器通信。
不同pod中的容器具有不同的ip地址,不能使用localhost进行通信。但是,它们可能在本地主机网络上公开自己的端口,类似于docker容器所做的(这就是为什么可以使用localhost从本地节点进行通信)。
在集群中,您可以使用pod-ips,但是如果您想与您的主机通话,您需要使用pod的主机网络
或主机的外部ip。
更多关于kubernetes网络的信息,请参阅文档和本文。