对于
PrometheusDNS服务发现,您不想使用通过使用
docker swarm内部负载平衡
Virtual IP (VIP)。
您正在寻找的是 每任务 服务DNS。为了让每一个服务的IP不会忽略你的群,只是 前缀 与码头工人群的服务名称的DNS
tasks.。
例如,在具有3个节点的集群中,我得到:
$ nslookup tasks.node-exporterServer: 127.0.0.11Address 1: 127.0.0.11Name: tasks.node-exporterAddress 1: 10.210.0.x node-exporter.xxx.mynetAddress 2: 10.210.0.y node-exporter.yyy.mynetAddress 3: 10.210.0.z node-exporter.zzz.mynet
但是,当我查询不带前缀的服务名称时,会得到一个IP(VIP一个IP,它将对每个容器的请求进行负载均衡):
$ nslookup node-exporterServer: 127.0.0.11Address 1: 127.0.0.11Name: node-exporterAddress 1: 10.210.0.w ip-x-x-x-x
您可以查看SO上的[此Q/A,以了解在中获得DNS解析的3种不同方式
dockerswarm。基本上,一个服务命名
myservice的
docker swarm:
myservice
解析Virtual IP (VIP)
为该服务的服务,该服务在内部 负载均衡 到各个任务IP地址。tasks.myservice
解析为群集中部署的每个容器的 每个私有IP 。docker.com
不作为服务名称存在,因此请求将转发到已配置的默认DNS服务器(您可以自定义)。
注意:容器名称也可以解析,尽管直接解析为其IP地址。
查看您提供的链接,
node-exporter配置使用了
task获得服务的方式:
使用导出程序服务名称,可以配置DNS发现:
scrape_configs:- job_name: 'node-exporter' dns_sd_configs: - names: - 'tasks.node-exporter' type: 'A' port: 9100
希望这可以帮助!



