我们如何获取 Kubernetes 中另一个节点的 dns?

How do we get the dns of another node in Kubernetes?

我有一个 Prometheus 自定义导出器,它从同一节点内的应用程序 pod 中删除指标。我想使用 url (dns) 而不是目标应用程序的 IP 地址。

集群中的每个节点都将部署 1 个这样的应用程序和 1 个导出器。每个导出器如何知道其对应的应用程序 pod 的 dns?

应用程序节点名称为 my-app-1、my-app-2、...

所以我认为您正试图通过让 prometheus 为它抓取一个指标导出器来监控您的应用程序。此指标导出器 运行s 在另一个 pod 中,与您的应用程序 pod 在同一集群上,但由于指标导出器 运行s 在另一个 pod 上,它必须找到应用程序 pod 才能生成它的指标。

我建议您遵循 kubernetes sidecar 模式,并让指标导出器 运行 与您的应用程序容器位于同一个 pod 中。这样你就不需要让指标导出器发现你的应用程序 pod,因为它已经知道它在哪里 运行s,因为同一个 pod 中的容器通过 localhost 和它们各自的端口发现彼此。这样,您始终可以预测您的应用程序 运行 的位置,并且您可以以相同的方式为每个应用程序 pod 可靠地配置您的指标导出器。

检查 https://kubernetes.io/docs/concepts/workloads/pods/#workload-resources-for-managing-pods 以了解同一 pod 中的容器如何相互交互以及 sidecar 模式如何工作。