elasticsearch - 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:9200
or交谈127.0.0.1:9200
?
解决方案
评论摘要:
如果您在 Pod 中与 localhost 对话,那么您只是在与该 Pod 中的容器对话。
不同 Pod 中的容器 IP 地址不同,无法使用 localhost 进行通信。但是,它们可能会在您的本地主机网络上公开自己的端口,类似于您的 Docker 容器正在做的事情(这就是您可以使用 localhost 从本地节点进行通信的原因)。
在您的集群中,您可以使用 Pod IP,但是如果您想与您的主机通信,您需要为您的 Pod 使用主机网络
spec:
hostNetwork: true
或主机的外部 IP。
推荐阅读
- java - Spring Integration JMS Consumers 不消费所有消息
- scala - SCALA:如何使用收集功能从数据框中获取最新修改的条目?
- scala - 杜比。设置连接超时
- encryption - Openssl - AES-256-ECB 用密钥解密,坏幻数
- node.js - Mongodb 中的 Bulkwrite 操作是如何工作的?
- linux-kernel - 将内核日志记录到串行端口,但继续记录到 oops ramlog
- c# - 如何防止从浏览器下载 HLS (m3u8) 分段文件
- python - SQLAlchemy 递归 CTE 查询不返回非列成员?
- docker - apache Guacamole(docker install)的空白登录页面
- yugabyte-db - 如何在 yugabyte 中编写和执行面向列的查询?