2017-02-24 9 views
3

私はGoogle Container Engine(gke)のkubernetesの中にいくつかのpythonアプリケーションを複製セットとして実行しています。それらの側面に沿って私はクラスタ内の各ノードでdd-agentを起動するDatadog DaemonSetを作成しました。別名Kubernetes Podsからdogstatsd(datadog)ポッドにアクセス

今、私はそのエージェントdogstatsdをpythonアプリケーションからのメトリックスロギングに使用し、新しいDatadog APMを試してみたいと思います。 私はちょうどddtraceのPythonパッケージをインストールし、文書のようにそれを使用している場合、それは明らかにそれがddagentポッドのポート7777分の8126にアクセスする方法を推測する魔法の方法を持っていない

[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 

と私のログをいっぱいに。

アイブ氏は、ポートを公開するサービスを作成してみました:

--- 
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上の任意のTRAFICが表示されないなど

DD-エージェントDaemonSetは、このように定義されていますしようとしているときに、そう

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はエンドポイントを表示しますか?エンドポイント/ datadog-statsd -n はエンドポイントを表示しますか?デーモンセットがデプロイされているノードと同じエンドポイント数である必要があります。 – rwehner

+0

です。私はついにそれを理解したと思う。 – svrist

答えて

1

これをデバッグするには、デプロイメント+ dameonsetとサービスを削除して再作成しました。その後、それは働いた....

+0

DaemonSetとServiceを削除して再作成する行為だったのだろうか?同様の問題があります。 – Intelekshual

+0

私の知る限り、@Intelekshualは、それを修正した削除/再作成でした。 – svrist

+0

私は同じ問題を抱えています。あなたのサービスをどのように作成したかを理解したいと思います。あなたのクラスタのdd-agent(ノード) – tamale

0

あなたはDiscovering Servicesドキュメントを見たことがありますか?環境変数はサービスが特定の順序で出現する必要があるため、環境変数ではなくサービス検出にDNSを使用することをお勧めします。

関連する問題