Docker swarm 将节点可用性限制为大型堆栈中的一项服务

问题描述

我有一个群,有 1 个管理器和 2 个节点(工人 1,工人 2)。

在 manager 和 worker 1 上,我在他们之间复制了 30 多个服务,其中之一是 MysqL

在worker 2上,我想为worker 1的MysqL设置一个MysqL slave。

但是,我希望 worker 2 仅可用于 MysqL 服务,而不能用于任何其他服务。

我可以通过向我不想复制到工作人员 2 的每个服务添加部署约束来实现这一点,但是更改 30 多个服务并为每个服务添加约束似乎很费力而且有点麻烦。

有没有一种优雅的方法来实现这一目标?

解决方法

确实,这种方法很麻烦,而且开销很难接受。不过,暂时没有其他选择可以通过 Swarm 部署实现这一目标。

如果您愿意从 Swarm 迁移到 Kubernetes,那么 taints and tolerations 会满足您的需求。