无法自动检测 kubelet URL:datadog_checks.base.errors.CheckException

San*_*ngh 4 java azure docker kubernetes datadog

我在 kubernetes 集群中设置了 datadog 跟踪客户端来监视我部署的应用程序。它在 kubernetes 版本 1.15x 上运行良好,但当我将版本升级到 1.16x 时,该服务本身就没有显示在 Datadog 仪表板中。

目前使用:

  1. 库伯内特斯 1.16.9

  2. 数据狗0.52.0

检查代理状态时。它给出以下异常:

Instance ID: kubelet:xxxxxxxxxxxxx [ERROR]
      Configuration Source: file:/etc/datadog-agent/conf.d/kubelet.d/conf.yaml.default
      Total Runs: 12,453
      Metric Samples: Last Run: 0, Total: 0
      Events: Last Run: 0, Total: 0
      Service Checks: Last Run: 0, Total: 0
      Average Execution Time : 5ms
      Last Execution Date : 2020-06-19 15:18:19.000000 UTC
      Last Successful Execution Date : Never
      Error: Unable to detect the kubelet URL automatically.
      Traceback (most recent call last):
        File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/base.py", line 822, in run
          self.check(instance)
        File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/kubelet/kubelet.py", line 297, in check
          raise CheckException("Unable to detect the kubelet URL automatically.")
      datadog_checks.base.errors.CheckException: Unable to detect the kubelet URL automatically.
Run Code Online (Sandbox Code Playgroud)

对我来说这看起来像是版本问题。如果是我需要使用哪个版本的Datadog进行监控?

San*_*ngh 5

对我来说,这是部署的 DataDog 守护程序集的问题:

我做了什么来解决:

  1. 检查 daemonset 是否存在:

    kubectl get ds -n datadog
    
    Run Code Online (Sandbox Code Playgroud)
  2. 编辑 datadog 守护进程集:

    kubectl edit ds datadog -n datadog
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在打开的yaml中添加

    - name: DD_KUBELET_TLS_VERIFY
      value: "false"
    
    Run Code Online (Sandbox Code Playgroud)

    将其添加到所有位置的env:标记中。对我来说,yaml 中有 4 个地方有 DD 标签。

  4. 保存并关闭它。守护进程集将重新启动。并且应用程序将开始被跟踪。