查看kubernetes的端口30873 是那个pad占用,是不是服务

要查看 Kubernetes 中某个端口(如 30873)是否被使用,以及被谁使用,通常我们分两步进行:


一、判断这个端口是不是某个 Service 的 NodePort

你可以用下面这个命令全局搜索所有 service:

kubectl get svc --all-namespaces -o jsonpath="{range .items[*]}{.metadata.namespace}{'\t'}{.metadata.name}{'\t'}{.spec.ports[*].nodePort}{'\n'}{end}" | grep 30873

如果你看到输出类似:

default    my-nginx    30873

就说明这是 default 命名空间下的 my-nginx service 正在使用 NodePort 30873


二、查看 Node 节点上是否监听该端口

登录到某个 Node 节点,使用以下命令检查端口是否监听:

sudo netstat -tulnp | grep 30873
# 或者
sudo ss -tulnp | grep 30873
# 或者
sudo lsof -i :30873

输出示例:

tcp6       0      0 :::30873      :::*       LISTEN      12345/kube-proxy

说明这个端口正在被监听,可能由 kube-proxy 代理监听(对应 Kubernetes Service)。


三、查看是哪类 Service 类型占用了该端口

kubectl describe svc <service-name> -n <namespace>

Type: NodePort 以及 NodePort: <port> 字段,确认该端口是否映射为 NodePort。


补充:释放端口后的排查

如果你 已经删除了某个 Service,但端口仍显示被监听:

  1. 检查 kube-proxy 是否有残留规则未清理(可重启 kube-proxy)
  2. 检查 iptables 是否有规则未释放
  3. 确认服务是否真的删除(kubectl get svc --all-namespaces | grep 30873
  4. 等待 kube-proxy 同步(一般几秒钟内)

需要我帮你写个脚本自动查找占用端口的 service 吗?比如:

PORT=30873
kubectl get svc --all-namespaces -o jsonpath="{range .items[*]}{.metadata.namespace}{'\t'}{.metadata.name}{'\t'}{.spec.ports[*].nodePort}{'\n'}{end}" | grep $PORT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值