访问相邻Kubernetes Pods中的dogstatsd(datadog)Pod

2024-03-29 09:00:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在googlecontainer Engine(gke)上运行大量python应用程序作为kubernetes的副本集。除了它们之外,我还创建了Datadog守护进程,它在集群中的每个节点上启动一个dd代理。在

现在,我想使用代理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 pods的8126/7777端口。在

我尝试创建一个公开端口的服务:

^{pr2}$

但是我的python pod似乎仍然无法访问例如os.environ['DATADOG_STATSD_PORT_8126_TCP_ADDR']和{}。 它们已经定义好了,但我还是觉得连接超时了。如果我连接到dd代理pods并启用tcpdump,那么在端口8126等上也看不到任何流量

dd代理守护进程的定义如下:

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

Tags: path端口dockernametrue应用程序代理进程
2条回答

因此,在尝试调试时,我删除了deployment+dameonset和服务并重新创建了它。后来它成功了。。。。在

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

相关问题 更多 >