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

EKS集群中对接Jaeger Agent DaemonSet时UDP连接被拒求助

Jaeger Agent DaemonSet连接拒绝问题排查与解决

看起来你遇到了Jaeger Agent DaemonSet模式下的UDP连接拒绝问题,我之前在EKS集群里也碰到过类似的情况,结合你的配置和报错信息,给你梳理下排查方向和解决方案:

核心问题定位

你的应用通过status.hostIP(Node IP)访问Agent的6831 UDP端口时被拒绝,但Sidecar模式正常,且节点安全组无限制,大概率是DaemonSet的端口没有映射到Node主机上,导致Node的6831端口并没有被Agent容器占用。


1. 修复DaemonSet的端口映射配置

你当前的DaemonSet只定义了containerPort,这个端口仅在容器内部可见,并没有绑定到Node的主机端口上。应用访问Node的6831端口时,没有对应的进程监听,自然会拒绝连接。

修改后的DaemonSet配置(添加hostPort):

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: jaeger-agent
  labels:
    app: jaeger
    app.kubernetes.io/name: jaeger
    app.kubernetes.io/component: agent
  namespace: observability
spec:
  selector:
    matchLabels:
      app: jaeger
      app.kubernetes.io/name: jaeger
      app.kubernetes.io/component: agent
  template:
    metadata:
      labels:
        app: jaeger
        app.kubernetes.io/name: jaeger
        app.kubernetes.io/component: agent
    spec:
      containers:
      - name: jaeger-agent
        image: jaegertracing/jaeger-agent:1.18.0
        args: ["--reporter.grpc.host-port=<collector-name>:14250"]
        ports:
        - containerPort: 5775
          hostPort: 5775  # 绑定到Node主机端口
          protocol: UDP
        - containerPort: 6831
          hostPort: 6831  # 绑定到Node主机端口
          protocol: UDP
        - containerPort: 6832
          hostPort: 6832  # 绑定到Node主机端口
          protocol: UDP
        - containerPort: 5778
          hostPort: 5778  # 绑定到Node主机端口
          protocol: TCP

提示:hostPort会将容器端口直接映射到Node的对应端口,确保应用通过Node IP访问时能路由到Agent容器。

2. 检查集群NetworkPolicy限制

即使节点安全组没有限制,EKS集群内部的NetworkPolicy可能会阻止跨命名空间的UDP流量。你需要检查应用所在命名空间(比如你的HotRod在default命名空间)和Agent所在的observability命名空间是否有NetworkPolicy规则拦截了6831端口的流量。

如果存在NetworkPolicy,需要添加允许应用访问Agent的规则,示例如下:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-hotrod-to-jaeger-agent
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: hotrod
  policyTypes:
  - Egress
  egress:
  - to:
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: observability
      podSelector:
        matchLabels:
          app.kubernetes.io/component: agent
    ports:
    - protocol: UDP
      port: 6831

3. 验证端口监听状态

修改DaemonSet后,登录到应用所在的Node节点,执行以下命令检查6831端口是否被Agent进程监听:

sudo netstat -ulpn | grep 6831

如果输出中能看到jaeger-agent进程监听0.0.0.0:6831,说明端口映射成功。

4. 备选检查:客户端端口配置

默认情况下Jaeger客户端使用6831端口发送UDP Span,但如果你的Agent有自定义端口配置,需要在HotRod应用中添加JAEGER_AGENT_PORT环境变量指定对应端口。不过从你的报错信息来看,应用确实在访问6831端口,这一步可以作为兜底检查。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:27:53