2017-02-24 62 views
3

我在Google Container Engine(gke)的kubernetes内部运行了多个python应用程序作为副本集。在他们旁边,我创建了Datadog DaemonSet,它在群集中的每个节点上启动一个dd-agent。访问dogstatsd(datadog)Pod从adjecent Kubernetes Pods

现在我想使用代理dogstatsd从python应用程序进行日志记录,并尝试新的Datadog APM。 如果我仅仅安装ddtrace Python包,并使用它像记录它填补了我的日志与

[2017-02-24 14:09:15,199] [5] [ddtrace.writer] [ERROR] cannot send spans: [Errno 110] Connection timed out 
[2017-02-24 14:11:23,660] [5] [ddtrace.writer] [ERROR] cannot send spans: [Errno 110] Connection timed out 

显然,没有神奇的方式猜测如何访问ddagent荚端口7777分之8126。

香港专业教育学院尝试创建其中暴露的端口服务:

--- 
apiVersion: v1 
kind: Service 
metadata: 
    annotations: 
    prometheus.io/scrape: 'true' 
    labels: 
    app: datadog-statsd 
    name: datadog-statsd 
spec: 
    ports: 
    - name: dogstatsd 
    port: 8125 
    targetPort: dogstatsdport 
    protocol: UDP 
    - name: ddapm 
    port: 8126 
    targetPort: ddtraceport 
    protocol: TCP 
    selector: 
    app: dd-agent 

但我的Python豆荚似乎仍然不被例如os.environ['DATADOG_STATSD_PORT_8126_TCP_ADDR'].._PORT能够访问。 他们被定义和所有,我只是仍然连接超时。如果我连接到DD-剂吊舱,使tcpdump的我还没有看到端口8126等

的DD-剂DaemonSet是这样定义的任何TRAFIC:

apiVersion: extensions/v1beta1 
kind: DaemonSet 
metadata: 
    name: dd-agent 
spec: 
    template: 
    metadata: 
     labels: 
     app: dd-agent 
     name: dd-agent 
    spec: 
     containers: 
     - image: datadog/docker-dd-agent:latest 
     imagePullPolicy: Always 
     name: dd-agent 
     ports: 
      - containerPort: 8125 
      name: dogstatsdport 
      protocol: UDP 
      - containerPort: 8126 
      name: ddtraceport 
      protocol: TCP 
     env: 
      - name: API_KEY 
      value: ..... 
      - name: KUBERNETES 
      value: "yes" 
      - name: SD_BACKEND 
      value: docker 
      - name: DD_APM_ENABLED 
      value: "true" 
     volumeMounts: 
      - name: dockersocket 
      mountPath: /var/run/docker.sock 
      - name: procdir 
      mountPath: /host/proc 
      readOnly: true 
      - name: cgroups 
      mountPath: /host/sys/fs/cgroup 
      readOnly: true 
     volumes: 
     - hostPath: 
      path: /var/run/docker.sock 
      name: dockersocket 
     - hostPath: 
      path: /proc 
      name: procdir 
     - hostPath: 
      path: /sys/fs/cgroup 
      name: cgroups 
+1

'kubectl get endpoints/datadog-statsd -n '显示任何端点吗?它应该与部署守护程序集的节点的端点数相同。 – rwehner

+0

它的确如此。我想我终于明白了 – svrist

回答

1

所以,在试图调试这个我删除了部署+ dameonset和服务,并重新创建它。后来它的工作....

+0

是否删除并重新创建“修复”它的DaemonSet和Service的行为,还是您试过的其他事情?有类似的问题。 – Intelekshual

+0

据我所知,@Intelekshual,它是删除/重建,修复它 – svrist

+0

我被困在同样的问题,我想更好地了解你是如何创建你的服务 - 你没有为每个dd-agent(节点)在你的集群中,是吗? – tamale

0

你见过Discovering Services文档?我建议使用DNS进行服务发现而不是环境变量,因为环境变量需要服务以特定顺序出现。