如何在docker swarm上配置自动扩展?

Cel*_*gra 33 docker-swarm

我想知道如何配置此工具以从最少数量的节点开始,并在需要时增长到最大节点数.

我应该使用其他工具还是docker swarm解决这个问题?

abr*_*nan 36

简短的回答:目前使用Docker Swarm没有简单的方法.

Docker Swarm(或Swarm模式)不支持开箱即用的自动缩放机器.您需要使用另一种解决方案,比如docker-machine在基础架构上创建计算机(使用docker)并将这些计算机链接到现有的Swarm集群(带docker swarm join).

这将涉及大量脚本,但想法是监视集群的CPU /内存/网络使用情况(使用topmonit),一旦超出阈值(比如总集群资源的70%),就会触发调用docker-machine扩展的脚本群集.使用相同的想法,您也可以通过在低于下限阈值时从现有群集群中排空移除节点(最好是Agent节点)来缩小.

如果要使用此条件,则需要确保监视持续的资源使用情况,否则您将使基础结构产生并破坏节点中资源使用的频繁和突然变化.

您可以为集群中的计算机定义下限和上限,以控制事物.

请注意,Swarm需要至少3个Manager节点(建议5)才能维持Distributed Consensus算法的仲裁.因此,建议的最小下限是5个节点(Agent随着资源逐渐被服务使用,您可以使用节点进行扩展).

在某种程度上,您还可以查看Docker InfraKitTerraform进行基础架构自动化和运行状况监控.

更新:现在有一个很有前途的跨平台自动缩放器,支持Swarm模式任务自动缩放:Orbiter.虽然服务/机器自动缩放仍然没有任何开箱即用的功能.

  • @CelsoAgra AFAIK,有“docker service scale”命令(或其对应的“docker-compose”),但您还必须使用传入请求或 CPU 使用情况的统计信息来触发缩放。Kubernetes 确实有一个基于资源使用情况的 [pod autoscaler](https://kubernetes.io/docs/user-guide/horizo​​ntal-pod-autoscaling/),因此这可以适合您的用例:) (2认同)
  • 我们需要根据存储在prometheus中的指标进行自动缩放.我们构建了一个服务,它使用docker API根据来自prometheus的指标进行扩展https://github.com/sahajsoft/docker-swarm-service-autoscaler (2认同)