Kubernetes 连接到无状态集的无头服务上的端口存在问题

Kubernetes 连接到无状态集的无头服务上的端口存在问题,kubernetes,informix,minikube,kubernetes-service,kubernetes-statefulset,Kubernetes,Informix,Minikube,Kubernetes Service,Kubernetes Statefulset,您好,我正在尝试为位于statefulSet内的Informix容器公开5个端口。它附加了一个无头服务,以允许其他内部无状态集与它进行内部通信 我可以从我的informix-0pod和其他pod ping无头服务informix集服务,但是当我尝试nmap-p9088 informix集服务时,端口被列为关闭。我想这是因为我的yaml是错的,但我一辈子都找不出哪里错了 似乎headless服务确实已连接并指向正确的状态集,并且在minikube仪表板中,一切看起来都是正确的 有人有什么想法吗

您好,我正在尝试为位于statefulSet内的Informix容器公开5个端口。它附加了一个无头服务,以允许其他内部无状态集与它进行内部通信

我可以从我的
informix-0
pod和其他pod ping无头服务
informix集服务
,但是当我尝试
nmap-p9088 informix集服务时,端口被列为关闭。我想这是因为我的yaml是错的,但我一辈子都找不出哪里错了

似乎headless服务确实已连接并指向正确的状态集,并且在minikube仪表板中,一切看起来都是正确的

有人有什么想法吗

部署yaml代码段:
ss
输出中,您正在收听127.0.0.1,而不是所有接口:

informix@informix-0:/$ ss -lnt
State       Recv-Q Send-Q              Local Address:Port                Peer Address:Port
LISTEN      0      0                       127.0.0.1:9088                           *:*
LISTEN      0      0                       127.0.0.1:9089                           *:*

您需要调整应用程序配置以监听类似于
0.0.0.0
的内容,以便从pod外部访问它。

ss
输出,您正在监听127.0.0.1,而不是所有接口:

informix@informix-0:/$ ss -lnt
State       Recv-Q Send-Q              Local Address:Port                Peer Address:Port
LISTEN      0      0                       127.0.0.1:9088                           *:*
LISTEN      0      0                       127.0.0.1:9089                           *:*

您需要调整应用程序配置,以监听类似
0.0.0.0
的内容,以便从pod外部访问它。

您是否检查了与172.17.0.7关联的pod并在那里本地运行nmap?另外,检查pod内部的
ss-lnt
,确保端口正在监听所有接口,而不仅仅是127.0.0.1.Hi,172.17.0.7是与informix状态集关联的
informix-0
pod,上面的nmap输出是在
informix-0
上本地运行的。在与不同状态集关联的不同pod上运行它会返回相同的结果。我在上面的编辑中添加了ss-lnt的输出。基于这一点,
ss
输出看起来@BMitch的预感是正确的,对于127.0.0.1IP,它只绑定到9089端口,这就是为什么它在本地工作,而不是在POD之间工作。取决于此informix容器映像如何进行配置和启动进程。可能需要查看用户提供的sqlhosts。看起来您在必要的位置挂载了一个hostPath,该文件中有什么?您是否检查了与172.17.0.7关联的pod,并在那里本地运行nmap?另外,检查pod内部的
ss-lnt
,确保端口正在监听所有接口,而不仅仅是127.0.0.1.Hi,172.17.0.7是与informix状态集关联的
informix-0
pod,上面的nmap输出是在
informix-0
上本地运行的。在与不同状态集关联的不同pod上运行它会返回相同的结果。我在上面的编辑中添加了ss-lnt的输出。基于这一点,
ss
输出看起来@BMitch的预感是正确的,对于127.0.0.1IP,它只绑定到9089端口,这就是为什么它在本地工作,而不是在POD之间工作。取决于此informix容器映像如何进行配置和启动进程。可能需要查看用户提供的sqlhosts。看起来你在必要的位置安装了一个主机路径,文件里有什么?是的。谢谢,这就是问题所在。对于任何有类似问题的人,而不仅仅是informix。当连接到有状态集时,让进程侦听localhost将无法与无头服务一起工作。将其设置为侦听
0.0.0.0
将使其侦听所有接口或设置为侦听自己的主机名。特别是对于informix,我必须设置
SQLHOSTS
文件来有效地侦听
$(主机名)
\informix-00.0.0.0
将使其侦听所有接口或设置为侦听自己的主机名。特别是对于informix,我必须设置
SQLHOSTS
文件来有效地侦听
$(主机名)
\informix-0informix@informix-0:/$ ss -lnt State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 0 127.0.0.1:9088 *:* LISTEN 0 0 127.0.0.1:9089 *:* LISTEN 0 0 172.17.0.7:27017 *:* LISTEN 0 0 172.17.0.7:27018 *:* LISTEN 0 0 172.17.0.7:27883 *:* LISTEN 0 0 *:22 *:* LISTEN 0 0 :::22 :::*
informix@informix-0:/$ ss -lnt
State       Recv-Q Send-Q              Local Address:Port                Peer Address:Port
LISTEN      0      0                       127.0.0.1:9088                           *:*
LISTEN      0      0                       127.0.0.1:9089                           *:*