将数据从一个 Pod 发送到专门在同一主机上运行的另一个 Pod (DaemonSet)

R3D*_*3DL 4 docker kubernetes datadog

我有一个代理(datadog 代理,但可能是其他代理)在我的集群的所有节点上运行,通过 DaemonSet 部署。该代理正在收集有关主机的各种指标:cpu 和内存使用情况、IO、正在运行哪些容器。

它还可以通过侦听特定端口 1234 来收集自定义指标。

如何将数据从 pod 发送到在与 pod 相同的节点上运行的代理实例?如果我使用 Kubernetes 服务,发送指标的调用将在我的所有代理之间进行负载平衡,并且我将失去发出指标的 pod 与其运行的主机之间的相关性。

San*_*der 6

我使用完全相同的设置,dd-agent在我的 kubernetes 集群中作为 DaemonSet 运行。使用您在此处评论的相同端口映射,您可以将指标发送到运行应用程序的节点的主机名。

您可以使用 pod 规范中的向下 api 将节点名称添加到 pods 环境:

env:
- name: NODE_NAME
  valueFrom:
    fieldRef:
      fieldPath: spec.nodeName 
Run Code Online (Sandbox Code Playgroud)

然后,您只需打开一个 UDP 连接${NODE_NAME}:8125即可连接到 datadog 代理。