首页 > 解决方案 > Pod 无法卷曲 localhost

问题描述

在 localhost 的 9200 端口上运行了一个弹性搜索容器,但是从同一主机上的 pod 中,我无法卷曲 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/hosts

# 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

elastic-search 容器不由 Kubernetes 管理,而是在同一主机上运行。

为什么 pod 无法与localhost:9200or交谈127.0.0.1:9200

标签: elasticsearchkubernetes

解决方案


评论摘要:

如果您在 Pod 中与 localhost 对话,那么您只是在与该 Pod 中的容器对话。

不同 Pod 中的容器 IP 地址不同,无法使用 localhost 进行通信。但是,它们可能会在您的本地主机网络上公开自己的端口,类似于您的 Docker 容器正在做的事情(这就是您可以使用 localhost 从本地节点进行通信的原因)。

在您的集群中,您可以使用 Pod IP,但是如果您想与您的主机通信,您需要为您的 Pod 使用主机网络

spec:
   hostNetwork: true

或主机的外部 IP。

有关Kubernetes 网络的更多信息,请参阅文档这篇博文。


推荐阅读