Kubernetes hostPort:对 lsof 不可见?

Kubernetes hostPort:对 lsof 不可见?

我正在摆弄我自己的小型 Kubernetes 集群。

到目前为止我不明白的是如何查看所有开放端口(=我的 Pod 正在监听的所有内容)。

我使用 Traefik 作为入口主机端口:80 和:443我看到它在听:80:443当我跑步的时候sudo lsof -i

不过,我也将 GitLab 作为 Pod 运行,并为其分配了一个主机端口(54321)指向 Pod 的端口:22。我使用它来进行 git 克隆。

两个 Pod 均有一个节点选择器仅在主机上运行(...是的,我知道。)。

GitLab 的主机端口:54321没有显示sudo lsof -i。这是为什么?我知识有限,无法解释。

在配置方面,Traefik Pods 与 Gitlab Pod 的唯一区别在于,对于 Traefik,主机端口指向 Pod 中的相同端口(:80->:80:443->:443)而对于 Gitlab Pod,它们有所不同(:54321->:22)。

有人能给我解释一下吗?为什么我不能相信lsof在这种情况下?

提前致谢!

附言:该端口肯定是开放的并且正在监听

答案1

GitLab 的 hostPort :54321 没有显示sudo lsof -i。这是为什么?我无法用我有限的知识来解释这一点。

lsof 列出有关的信息文件1进程

没有过程在保持 hostPort 开放的主机上,因此没有任何内容可显示lsof

可能只有一个 netfilter ( iptables) 规则将该端口上的流量转发到您的 Gitlab Pod。使用sudo iptables-save和/或进行检查sudo iptables -L -v -nsudo iptables -L -v -n -t security -t nat -t mangle


广义上讲,打开的文件可以是常规文件、目录、块特殊文件、字符特殊文件、执行文本引用、库、流或网络文件(Internet 套接字、NFS 文件或 UNIX 域套接字)。

相关内容