2

我有一个 Docker 集群模式设置,其中节点看起来像这样

  • 群管理器
    • swarm-worker-01
    • swarm-worker-02
    • swarm-worker-for-my-special-application
    • swarm-worker-for-my-special-application-02

swarm-manager托管反向代理,工作节点托管一堆或多或少无关的小应用程序(我们是一家小型设计机构)。

在大多数情况下,这些应用程序是低带宽的,只是嗡嗡作响而不会互相打扰。但是,我们现在有一个新的应用程序(我们称之为special-application),它希望能够部署到任何工作节点(因为它是一个高流量的应用程序),但我想限制除了special application部署到这些节点之外的其他服务。

所以,我想要这样的东西:

  • swarm-worker-01(接受任何容器)
  • swarm-worker-02(接受任何容器)
  • swarm-worker-for-my-special-application (仅接受special application)
  • swarm-worker-for-my-special-application-02(仅接受special application

一种(一种)解决方案是给特殊节点一个标签,例如docker node update --label-add app-constraint=special-application swarm-worker-for-my-special-application,然后在我的特殊应用程序上,部署:

deploy:
  placement:
    constraints:
      - node.labels.app-constraint == special-application

在我的其他应用程序上:

deploy:
  placement:
    constraints:
      - node.labels.app-constraint != special-application

但是,这有两个缺点。一是我special-application只会部署在特殊节点上,而不是所有节点上。第二个是我必须通过我的每一个(数十个)其他服务并重新部署一个约束。

基本上,我希望special application能够在任何地方部署,同时让某些工作人员只接受来自特殊应用程序的部署,实际上为他们保留容量。

4

0 回答 0