我们有一个 docker swarm 系统,它有特殊的工作节点,它们是车辆。这些车辆可能会暂时失去与蜂群的连接(由于 LTE 连接)。
我们还需要在特定车辆(群节点)上启动特定容器。
我设法使用此约束命令在特定机器上启动服务:
docker service create --name redis --constraint node.labels.vehicle==vehicle1 redis:latest
这就像一个魅力,在特定车辆“vehicle1”上启动容器。 当车辆工作节点暂时断开连接时,节点上的容器继续运行,这是正确的行为。 manager看到容器下线,尝试在另一台机器上启动容器,但是因为约束,报错“no suitable node (scheduling...)”。
现在,当带有工作节点的车辆重新连接到 swarm 时,仍然在那里正常运行的容器被重新启动,因为管理器调度了它。
我能以某种方式告诉 swarm 管理器等待工作节点重新连接到 swarm 和/或在工作节点恢复在线时不重新启动容器吗?