You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Nginx-Ingress与DigitalOcean负载均衡转发TCP流量到Pod

Nginx Ingress TCP流量转发失败排查方案

核心配置错误点

  • LoadBalancer Service的targetPort配置错误:你当前配置中LoadBalancer 9000端口的targetPort指向8998,而通过tcp-services ConfigMap配置TCP转发规则时,Ingress Nginx Pod会自动监听ConfigMap中定义的端口(也就是9000),你把流量转发到8998端口,Nginx Pod没有监听该端口,直接导致连接断开。
    修正后的Service端口配置:
    - name:  transmission-port
      port:  9000
      targetPort:  9000
      protocol: TCP
    
  • Ingress Nginx控制器未配置ConfigMap读取参数:默认状态下Ingress Nginx不会主动读取TCP服务配置,需要在控制器Deployment的启动参数中增加指定配置项,否则你创建的tcp-services ConfigMap不会生效。
    执行命令查看当前控制器启动参数:
    kubectl get deployment ingress-nginx-controller -n ingress-nginx -o jsonpath='{.spec.template.spec.containers[0].args}'
    
    确认参数中存在--tcp-services-configmap=ingress-nginx/tcp-services,如果没有则需要在Deployment配置中添加该参数,添加后控制器会自动重启加载配置。

其他需排查的常见问题

  • 云服务商安全组/防火墙规则:DigitalOcean默认的负载均衡、节点安全组仅放行80、443端口入站,需要手动在控制台放行TCP 9000端口的入站流量,允许你需要的源IP段访问。
  • 后端服务可用性验证:确认staging命名空间下的speed-transmission-service服务运行正常,端口确实为9000,可在集群内执行如下命令测试连通性:
    kubectl run -it --rm --image=busybox net-test -- nc -zv speed-transmission-service.staging.svc.cluster.local 9000
    
  • NetworkPolicy限制:检查集群内是否配置了NetworkPolicy规则,禁止了Ingress Nginx Pod到后端服务的9000端口访问,或者禁止了外部到Ingress Nginx 9000端口的访问。
  • 控制器日志排查:执行如下命令查看Ingress Nginx控制器日志,确认是否存在配置加载错误、转发报错等信息:
    kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx
    

内容的提问来源于stack exchange,提问作者Adebari Olalekan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:06:06