gpt4 book ai didi

kubernetes - 在 Kubernetes 上将 statsd-exporter 设置为守护进程,并从 pod 向其发送指标

转载 作者:行者123 更新时间:2023-12-02 12:03:22 24 4
gpt4 key购买 nike

我想在我的 Kubernetes 集群上将 statsd-exporter 设置为 DaemonSet。它公开了一个 UDP 端口 9125,应用程序可以在该端口上使用 statsD 客户端库发送指标。 Prometheus 爬虫可以爬取此导出器以获取应用程序或系统指标。我想将指标发送到在端口 9125 上的导出器中运行的 UDP 服务器。我有两个选择:

  1. 将服务公开为 DaemonSet 的 ClusterIP,然后将 statsD 客户端配置为使用该 IP 和端口发送指标

  2. 使 statsd-exporterhostNetwork 上运行,并以某种方式使 pod 能够将指标发送到在同一网络上运行的 exporter节点。

不知何故,选项 2 似乎更好,因为我的 pod 会将指标发送到在同一节点上运行的导出器,但我无法将指标发送到 statsd-exporter 的本地 pod,因为我没有运行 pod 的节点的 IP。

您能否比较这两种方法的优缺点,并建议我如何知道与导出器一起运行 pod 的节点的 IP 地址。

编辑 1

我可以通过添加环境变量来获取节点IP。

- name: NODE_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP

我仍然需要弄清楚哪种设置方法更好。公开类型为 ClusterIP 的服务,然后在 pod 中使用环境变量中的 HOST:PORT 或在 pod 规范中使用 hostNetwork: true 然后使用 NODE_IP 环境变量访问它。 clusterIp 是否保证数据包将路由到与发送数据包的 pod 相同的节点?

编辑 2

我探索了 headless service我认为这最接近我想要的。但是我不确定DNS解析是否会返回本地节点IP作为nslookup中的第一个结果。

最佳答案

我会建议以下两种方法之一,两者各有利弊。

  • 快速,可能不完全安全。

使用 hostPort 设置守护进程。这会很快,因为两个 pod 都在同一个节点上,但 statsd 端口会暴露。 (您需要通过其他方式保护 statsd)

  • 不如 hostPort 快,但安全

公开服务并使用服务 dns 进行连接 (servicename.namespace.svc.cluster.local)。不如 hostPort 快,因为无法到达特定的 pod,但安全,因为集群外部的任何人都无法访问 statsd。

更多详情:https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#communicating-with-daemon-pods

关于kubernetes - 在 Kubernetes 上将 statsd-exporter 设置为守护进程,并从 pod 向其发送指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57670158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com