Это работает для меня, так что я пройдусь по нему, чтобы увидеть, не пропало ли что-то на вашем конце:
Я создал рой из трех узлов с одним менеджером:
docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
diewo1v4bf2149fx422guh8ci * dvc1 Ready Active Leader 18.06.1-ce
jlz2sbman8wz7sukcs41jng1n dvc2 Ready Active 18.06.1-ce
g7kocy0qo76m42o80phr6poh4 dvc3 Ready Active 18.06.1-ce
Я добавляю метку к узлу 3:
docker node update dvc3 --label-add server=data
Докер узел проверяет dvc3:
"Spec": {
"Labels": {
"server": "data"
},
"Role": "worker",
"Availability": "active"
},
У меня есть файл compose stack.yml:
version: '3.7'
services:
nginx:
image: nginx:alpine
deploy:
mode: global
placement:
constraints:
- node.labels.server == data
Я развернул стек:
docker stack deploy -c stack.yml test
Я также выполнял docker events
на dvc1, который показал:
2018-09-15T23:50:49.608191542-04:00 network create yf21vjsbjpcnastxugnp3dax5 (name=test_default)
2018-09-15T23:50:49.609334207-04:00 network update yf21vjsbjpcnastxugnp3dax5 (name=test_default)
2018-09-15T23:50:49.609992316-04:00 node update diewo1v4bf2149fx422guh8ci (name=dvc1)
2018-09-15T23:50:49.610052739-04:00 node update g7kocy0qo76m42o80phr6poh4 (name=dvc3)
2018-09-15T23:50:49.610086383-04:00 node update jlz2sbman8wz7sukcs41jng1n (name=dvc2)
2018-09-15T23:50:50.067716009-04:00 service create xjgwq14ot13r1olzcsatd2ktb (name=test_nginx)
2018-09-15T23:50:50.119799354-04:00 service update xjgwq14ot13r1olzcsatd2ktb (name=test_nginx)
Я должен был также запустить события на dvc3, поэтому я поймал создание задачи (который будет отображаться только на узле, который его получает).
Давайте проверим стек и задачу:
docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
xjgwq14ot13r test_nginx global 1/1 nginx:alpine
docker node ps dvc3
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
w1i3fpwfy88c test_nginx.g7kocy0qo76m42o80phr6poh4 nginx:alpine dvc3 Running Running about a minute ago
Надеюсь, это поможет, можете ли вы найти свое решение в этом примере и посмотретьесли это работает?