2017-02-24 102 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進行服務發現而不是環境變量,因爲環境變量需要服務以特定順序出現。