Docker 集群策略

Docker swarm strategy

任何人都可以分享他们改变 docker swarm 调度策略的经验,因为有三种(spread、binpack 和 random)。 spread 是 docker swarm 使用的默认策略,我希望它更改为 binpack。

您列出的 Swarm 调度策略适用于作为独立容器实现的 Classic Swarm,该容器充当各种 docker 引擎的反向代理。大多数人都在使用较新的 Swarm 模式而不是这个,经典 Swarm 的开发工作很少。

较新的 Swarm 模式包括一个可以调整的调度程序选项。该单一选项是 HA Spread 算法。当您拥有单个服务的多个副本时,它将首先寻求将这些副本分布到满足所需条件的多个节点上。并且在副本最少的节点中,它会优先选择其他调度容器最少的节点。

此算法的调整包括约束和放置首选项。约束允许您在具有特定标签或平台的节点上要求服务 运行。放置首选项允许您将工作负载分散到给定标签的不同值,这有助于确保所有副本不 运行 在同一可用区内。

None Swarm 模式下的这些配置包括装箱选项。如果您希望减少 swarm 集群中的节点数量,则可以更新节点状态以减少节点的工作负载。这将优雅地停止该节点上的所有 swarm 管理容器并将它们迁移到其他节点。或者您可以简单地暂停在该节点上安排新的工作负载,这将随着服务在其他节点上更新和安排而逐渐删除副本,但不会抢先停止该节点上的 运行ning 副本。这两个选项由docker node update --availability:

控制
$ docker node update --help

Usage:  docker node update [OPTIONS] NODE

Update a node

Options:
      --availability string   Availability of the node ("active"|"pause"|"drain")
      --label-add list        Add or update a node label (key=value)
      --label-rm list         Remove a node label if exists
      --role string           Role of the node ("worker"|"manager")

有关约束和放置首选项的更多详细信息,请参阅:https://docs.docker.com/engine/reference/commandline/service_create/#specify-service-constraints---constraint