我的撰写文件中有以下内容:
postgres:
deploy:
mode: global
placement:
constraints:
- node.labels.server == data
当我检查它时,我的节点有以下内容:
"Spec": {
"Labels": {
"server": "data"
},
"Role": "worker",
"Availability": "active"
},
但是,当我部署我的堆栈postgres不安装任何地方...
我错过了什么?
[UPDATE]
这是在docker-compose.prod.yml顺便说一下,如果你想知道配置的其余部分在哪里
[UPDATE]
这是在多个服务器上运行我的compose作为堆栈。使用此命令将其关闭:
docker stack deploy --compose-file docker-compose.yml --compose-file docker-compose.prod.yml stackname--with-registry-auth
这是ps的输出:
root@sonatribe-1:~# docker service ps postgres --no-trunc
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
在其他服务的其他地方我有这样的东西,以确保在管理器节点上运行某些东西:
deploy:
mode: global
placement:
constraints:
- node.role == manager
这很好 - 它只是使用的一个:
node.labels.server == data
这不起作用
这对我有用,所以我会逐步介绍它,看看你的结果是否缺少:
我创建了一个三节点群,有一个管理器:
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
docker node inspect 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
我也在dvc1上运行docker events
,它显示:
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
我希望有所帮助,你可以将你的解决方案愚蠢到那个例子,看看它是否有效?