我试图找出 Kubernetes 集群上运行的哪个应用程序正在使用特定端口与 RabbitMQ 集群通信。在 RabbitMQ 上,我看到连接来自 192.168.1.10:34226。192.168.1.10 是 Kubernetes 节点之一。登录到 192.168.1.10 后,我使用 tcpdump 命令检查是否从该节点建立了连接tcpdump -i eth0 port 34226
。我看到两个方向的流量。现在我试图找出哪个进程正在建立此连接。首先我尝试使用 netstat:
netstat -tapn | grep 34226
但它什么也没找到。然后我尝试了 ss,但仍然一无所获。连接已建立,使用 tcpdump 我可以看到发送到 RabbitMQ 的心跳数据包和来自 RabbitMQ 的响应。但 netstat 和 ss 没有报告已建立的连接。
更新 1
我发现这与网络命名空间有关。我的问题类似于这个问题但我需要找到从 34226 端口建立连接的进程的 PID。
答案1
几周后我找到了答案。我需要使用netstat -tapn
以下命令在所有命名空间中运行:
sudo ip -all netns exec netstat -tapn | grep 34226
现在我有了从 34226 端口启动 tcp 连接的进程的 PID 号。