- 之前有做过使用单机版的consul实现Prometheus服务注册,以为使用集群版的consul只是将consul服务地址从节点IP变为了网关IP。但比较坑的就是,当使用consul注册一个service的时候,该service会存储在集群中的某个consul server上,删除该service时必须指定该server的节点IP/域名,否则无法删除。但在网关条件下,作为客户端只能指定网关IP/域名,这样在删除service时就会出现问题。因此自己做了个consul proxy工具,该工具以sidecar的方式与consul server部署在同一个pod,代理该pod的8500的进出流量,实现后端控制删除service的功能,可以从github下载使用
- job_name: 'consul'
consul_sd_configs:
- server: '10.10.10.1:8500' #本地非loopback接口地址
services: []
relabel_configs:
- source_labels: [__meta_consul_tags]
regex: .*
action: keep
target_label: consul_tags
- source_labels: [__address__]
regex: 127.0.0.1:8300
action: drop