首页/云/Kubernetes 速查/NodePort 连通性验证步骤
网络与服务55 条

NodePort 连通性验证步骤

从集群外验证 NodePort 需要按「服务配置 → 后端就绪 → 节点监听 → 防火墙 → 源端路由」顺序排查,避免盲改。

Kubernetes 速查云更新于 2026-10-13

为什么要分段验证

节点端口把服务暴露在每个节点的固定端口上,这条链路穿过了服务对象、后端就绪状态、节点转发规则、主机防火墙与云上安全策略等多个环节。外部访问不通时,按固定顺序逐段确认,能在几步之内定位到真正出问题的那一层,而不是反复修改配置碰运气。

基本信息

适用平台Kubernetes 1.20+,与网络插件无关
默认端口范围30000-32767
转发实现节点代理写入的转发规则(规则或虚拟服务模式)
涉及层次服务配置、后端就绪、节点转发、主机防火墙、云上策略
常用工具curl、监听查看、转发规则查看

典型使用场景

  • 新服务通过节点端口对外提供访问,上线前验证连通性
  • 集群内访问正常但外部不通,需要确定是哪一层拦截
  • 发布后访问偶发失败,检查后端端点数量与就绪状态
  • 云主机环境确认安全组与访问控制是否放行
  • 多网卡节点上判断应当使用哪张网卡的地址访问

集群侧确认

集群侧确认
kubectl get svc web-np -o wide                      # 端口映射与分配到的节点端口
kubectl get endpoints web-np                        # 后端地址是否为空
kubectl get pods -l app=web -o wide                 # 后端副本是否就绪
kubectl get svc web-np -o jsonpath='{.spec.ports[0].nodePort}'   # 取实际端口号

节点与外部侧确认

节点与外部侧确认
curl -sv http://<节点内网IP>:30080/health          # 从集群外验证
ss -lntp | grep 30080                              # 查看是否有进程监听
iptables -t nat -L KUBE-NODEPORTS -n | head        # 转发规则是否存在
# 云上检查安全组与网络访问控制;节点本机检查防火墙是否放行

分段判断

层次确认内容异常表现
服务配置端口映射与分配到的节点端口端口未分配或与服务定义不一致
后端就绪端点列表是否有地址端点为空说明没有可用副本
节点转发转发规则是否存在规则缺失说明节点代理异常
主机防火墙节点本地是否放行本地拦截时同网段访问也不通
云上策略安全组与访问控制内网通外网不通的典型原因
节点端口由转发规则响应该端口,节点上没有用户态进程监听属于正常现象,不能用进程列表判断服务是否存在。
节点端口默认在整个节点网络内可访问,缺少防火墙与策略限制时等于把服务直接暴露出去。生产环境应配合来源白名单或改用入口控制器。

易错点

  • 用公网地址测不通就断定集群故障:先在内网节点上验证,多数差异来自安全组或运营商策略
  • 看到节点上没有进程监听就认为服务没起来:转发规则模式下本来就没有用户态监听进程
  • 端点为空却反复调整防火墙:先确认后端副本是否就绪,否则放行再多端口也不通
  • 生产环境长期用节点端口对外暴露服务:缺少访问控制,服务边界容易被绕过

数据来源与参考

  • Kubernetes 官方文档 · Service(NodePort)/ 集群排障实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌