我的撰写文件中包含以下内容:
postgres:
deploy:
mode: global
placement:
constraints:
- node.labels.server == data
当我检查它的节点时,它具有以下内容:
"Spec": {
"Labels": {
"server": "data"
},
"Role": "worker",
"Availability": "active"
},
但是,当我部署堆栈时,postgres不会安装在任何地方...
我想念什么?
[更新]
这在docker-compose.prod.yml btw中,以防您想知道其余配置在哪里
[更新]
这使我的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
那行不通
答案 0 :(得分:0)
这对我有用,所以我将逐步检查它,看看您的末端是否缺少某些东西:
我创建了一个由一个管理员组成的三节点集群:
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节点检查dvc3:
"Spec": {
"Labels": {
"server": "data"
},
"Role": "worker",
"Availability": "active"
},
我有一个撰写文件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
我希望能对您有所帮助,您能否将解决方案简化为该示例,看看它是否有效?