【问题标题】:Ban more than one container on a node在一个节点上禁止多个容器
【发布时间】:2017-08-20 16:20:21
【问题描述】:

如何在一个节点上禁止使用多个容器:Docker、Swarm、Compose? 例如,我有 5 个节点,我想部署 3 个副本某个服务,我希望这个副本将在不同的节点上。

【问题讨论】:

  • 是的...问题已解决。这是坏的。可能我应该使用其他编排系统,可能是 Nomad 或 Kubernetes 或其他?
  • 你应该使用内存限制和cpu限制,而不是担心容器数
  • 我使用 Apache Storm 存在 Supervisor 事物并且他必须是机器节点上的单个实例
  • 您在运行容器时设置了约束,请参阅docs.docker.com/compose/compose-file/#placement

标签: docker swarm


【解决方案1】:

Docker 的 swarm 模式当前默认采用 HA 调度策略,因此只要有多个可用节点来调度任务,就无需将服务分布在多个节点上。约束、内存限制和中断可能会影响必须在其上安排任务的可用节点。 HA 调度程序首先搜索具有最少任务实例的候选节点(通常为 0,除非您的副本多于节点),然后通过优先选择任务较少的节点来打破结果列表。

为了进一步控制在多个节点上分散任务,我建议查看最近版本中添加的placement preferences。我不相信这已经把它变成了堆栈和 compose 文件,但我希望这只是时间问题(新的 swarm 模式功能首先被引入到 docker service 命令行,然后添加到更高级别抽象)。放置首选项允许您标记节点以指示更高级别的拓扑,例如常见的机架、交换机或数据中心。并且放置首选项支持拓扑感知调度,可以将任务分散到具有所需标签的唯一值的节点之间。因此,如果您有两个独立的机架,每个机架有 5 个节点,如果没有拓扑感知调度,所有事情都可以安排在一个机架上,而使用拓扑感知调度,它可以将一半的任务放在每个机架上。

【讨论】:

    猜你喜欢
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-23
    • 2021-08-23
    • 2020-12-29
    相关资源
    最近更新 更多