1

当我给出多个标签放置约束并部署堆栈时,服务并未在上述任何一个约束中运行。

前任:

deploy:
    mode: global
    placement: 
        constraints: 
            - node.labels.type == test  
            - node.labels.type == prod
    restart_policy:
        condition: on-failure

但是,如果我只给出一个约束(任何一个),那么它就在那个标签节点中工作。

我在这里看到了同样的情况。不同之处在于使用了两种约束(节点类型和标签)。但我只使用了一种(标签)。

是否允许使用相同类型的约束。如果是如何使用它。

更新

前任:

deploy:
    mode: global
    placement: 
        constraints: 
            - node.hostname == server1  
            - node.hostname == server2
    restart_policy:
        condition: on-failure

现在这应该在两台服务器上运行该服务。但是服务根本没有启动。

4

1 回答 1

1

该配置发生的情况是,您尝试部署到标签type为 BOTH(不是任何一个)"test""prod". 那是行不通的。

如果您在其他地方需要这些"test""prod"标签,您可以选择创建第三个标签,例如"foo"

docker node update --label-add foo=bar NODE

然后你可以在你的约束中使用它:

constraints:
    - node.labels.foo == bar
于 2018-07-12T07:47:34.807 回答