Я хочу автоматически очистить данные от всех созданных служб в моем докере с помощью Prometheus.Я делаю это на кластере с двумя работниками и около 7 служб.Службы, которые я хочу очистить, развернуты по всему миру.
Я настроил Prometheus для очистки, используя dns_sd_config
и цель tasks.cadvisor
.Это приведет к возвращению одного хоста, в то время как должно быть две службы.
> tasks.cadvisor
Server: 127.0.0.11
Address: 127.0.0.11#53
Non-authoritative answer:
Name: tasks.cadvisor
Address: 10.0.1.9
В этом примере я могу найти только один узел CAdvisor, в то время как на самом деле их два.
Однако, когда я выполняю поиск службы, которая дважды запускается на одном и том же рабочем узле, при поиске удается найти обе службы
> tasks.nginx
Server: 127.0.0.11
Address: 127.0.0.11#53
Non-authoritative answer:
Name: tasks.nginx
Address: 10.0.1.25
Name: tasks.nginx
Address: 10.0.1.20
Похоже, что Docker DNS не может выполнить поиск за пределами своего собственного работника.узел.Как настроить Docker таким образом, чтобы поиск DNS возвращал все экземпляры службы для всех работников?
Вот мои текущие настройки докера:
version: '3'
services:
db:
image: postgres
deploy:
replicas: 1
placement:
constraints:
- node.role == manager
volumes:
- db-data:/var/lib/postgresql/data
backend:
build: reggie-server
image: requinard2/reggie-server
command: python manage.py runserver 0.0.0.0:8000
deploy:
mode: global
environment:
- PRODUCTION=1
depends_on:
- db
nginx:
build: reggie-nginx
image: requinard2/reggie-nginx
deploy:
mode: global
ports:
- "80:80"
- "443:443"
depends_on:
- "backend"
- "prometheus"
- "grafana"
prometheus:
build: reggie-prometheus
image: requinard2/reggie-prometheus
ports:
- "9090:9090"
deploy:
replicas: 1
placement:
constraints:
- node.role == manager
volumes:
- prometheus-data:/prometheus
depends_on:
- backend
- cadvisor
grafana:
deploy:
replicas: 1
placement:
constraints:
- node.role == manager
image: grafana/grafana:5.1.0
environment:
GF_SERVER_ROOT_URL=/grafana:
volumes:
- grafana-data:/var/lib/grafana
depends_on:
- "prometheus"
cadvisor:
image: google/cadvisor:latest
deploy:
mode: global
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
depends_on:
- redis
redis:
deploy:
replicas: 1
placement:
constraints:
- node.role == manager
image: redis:latest
volumes:
backend-code:
db-data:
grafana-data:
prometheus-data: