NodePort 是 Kubernetes 的一种 Service 类型,它允许你将 Service 暴露到集群外部的节点上,通过指定的 NodePort 来访问这个 Service。但是,NodePort 并不是在节点上运行的一个实际的服务进程,因此你无法直接使用 netstat
命令在节点上看到它。
实际上,当你创建一个 NodePort 类型的 Service 时,Kubernetes 会在每个节点上配置 iptables 规则,将这些流量转发到 Service 的 ClusterIP 和端口上。因此,当你尝试通过 curl localhost:31002
访问 NodePort 时,你实际上是在访问节点的 IP 地址和 NodePort,然后由 iptables 规则将流量转发到 Service 的 ClusterIP 和端口上。
由于 NodePort 并不是在节点上运行的一个实际的服务进程,因此 netstat
命令无法显示它。要查看 iptables 规则,你可以使用 iptables -t nat -L
命令。你应该能够看到一条规则,它将流量从 NodePort 转发到 Service 的 ClusterIP 和端口上。
总之,虽然你可以通过 NodePort 访问 Kubernetes Service,但它并不是在节点上运行的一个实际的服务进程,因此你无法在节点上使用 netstat
命令看到它。
这个端口是通过 iptable 规则转发到实际的服务 pod ip/端口 上去的,并没有一个进程在这个端口上监听。所以 netstat 自然就看不到。