当我给出多个标签放置约束并部署堆栈时,服务未在上述两个约束中运行。
例如:
deploy:
mode: global
placement:
constraints:
- node.labels.type == test
- node.labels.type == prod
restart_policy:
condition: on-failure
但是,如果我仅给出一个约束(任何约束),则它在该标签节点中起作用。
我见过同样的here。区别在于使用了两种约束(节点类型和标签)。但是我只使用了一种(标签)。
是否允许使用相同类型的约束。如果是使用方法。
更新
例如:
deploy:
mode: global
placement:
constraints:
- node.hostname == server1
- node.hostname == server2
restart_policy:
condition: on-failure
现在,这将在两台服务器上运行该服务。但是该服务并非完全启动。
答案 0 :(得分:0)
该配置会导致您尝试部署到标签type
为"test"
和"prod"
(两者都不是)的服务器上。那是行不通的。
如果您在其他地方需要这些"test"
和"prod"
标签,则可以选择创建第三个标签,例如"foo"
:
docker node update --label-add foo=bar NODE
然后您可以在约束中使用它:
constraints:
- node.labels.foo == bar