我正在摆弄我自己的小型 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 -n
,sudo iptables -L -v -n -t security -t nat -t mangle
广义上讲,打开的文件可以是常规文件、目录、块特殊文件、字符特殊文件、执行文本引用、库、流或网络文件(Internet 套接字、NFS 文件或 UNIX 域套接字)。