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

使用域名时Ingress无法路由TCP请求的问题排查

问题描述

在Azure Kubernetes集群中运行着一个ActiveMQ应用Pod,并已配置Ingress Controller来路由流量到该应用。另一台服务器上的应用需要向其发送TCP请求:

  • 使用Ingress负载均衡器IP或ActiveMQ Service的负载均衡器IP(tcp://<IP>:61616)可以正常连接;
  • 使用映射到Ingress IP的域名(tcp://amq.test.com:61616)时,出现“Error connecting to amq.test.com”错误。

已按照TCP路由方案配置相关资源,以下是具体配置文件:

已配置的YAML文件

Service.yaml(default命名空间)

apiVersion: v1
kind: Service
metadata:
  labels:
    app: activemq
  name: activemq
spec:
  ports:
    - name: "61616"
      port: 61616
      targetPort: 61616
    - name: "8161"
      port: 8161
      targetPort: 8161
  selector:
    io.kompose.service: activemq
status:
  loadBalancer: {}

ingress_route.yaml(default命名空间)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: dev-activemq-ingress
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/use-regex: "true"
    # nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  ingressClassName: nginx
  rules:
  - host: amq.test.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: activemq
            port:
              number: 8161

tcp-service-configmap.yaml(ingress-basic命名空间)

apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-basic
data:
  61616: "default/activemq:61616"

nginx-ingress Service 新增配置(ingress-basic命名空间)

- name: proxied-tcp-61616
    nodePort: 31453
    port: 61616
    protocol: TCP
    targetPort: 61616

Ingress Controller Deployment 新增配置(ingress-basic命名空间)

- args:
        - /nginx-ingress-controller
        - --tcp-services-configmap=ingress-basic/tcp-services

可能的问题排查与解决方案

  • 域名解析验证
    执行nslookup amq.test.com或dig amq.test.com,确认域名是否正确解析到Ingress负载均衡器的IP。如果解析错误,检查DNS记录配置;如果解析延迟,清空本地DNS缓存后重试。

  • Ingress端口配置校验

    1. 执行kubectl get svc -n ingress-basic,查看nginx-ingress Service的PORT列表中是否包含61616:31453/TCP,确认端口转发配置已生效。
    2. 查看Ingress Controller Pod日志:kubectl logs <ingress-controller-pod-name> -n ingress-basic,确认是否成功加载tcp-services ConfigMap,无报错信息。
  • Azure负载均衡器端口开放检查
    登录Azure门户,找到Ingress对应的负载均衡器,检查入站规则是否允许TCP协议的61616端口流量从外部访问。

  • 网络连通性测试
    在发送请求的服务器上执行telnet amq.test.com 61616或nc -zv amq.test.com 61616,测试端口是否可达。如果不可达,排查服务器出站防火墙、Azure网络安全组(NSG)是否存在阻断61616端口的规则。

  • ActiveMQ监听配置确认
    进入ActiveMQ Pod内部执行netstat -tulpn,确认61616端口的监听地址为0.0.0.0(而非仅localhost),确保Pod可以接收Ingress转发的流量。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:22:41