限制 swarm 每个节点创建超过 X 个容器

limit swarm from creating more than X number of containers per node

是否有任何限制 swarm 为每个工人创建例如 20 个容器的方法。因此,一个工作人员不会拥有超过 20 个容器以获得更好的 QoS(服务质量),这也会防止过度使用主机的资源?

谢谢

编辑

This is now implemented and it will be released as part of Docker 19.03.

You can see how it works with stack on docker/cli#1410 and with without stack (docker service ...) on docker/cli#1612

Source


其实没有

有个Github issue在说这事

您不能准确地说每个节点 "Limit to 20 containers"。如果内存是您的问题,您可以考虑在堆栈文件中使用限制和保留。如果没有足够的内存,这将告诉调度程序不要在节点上调度容器。您还可以设置 CPU reservation/limits 但这似乎不会影响时间表。

这个 link 撰写有助于了解限制和预留 https://docs.docker.com/compose/compose-file/#resources

  my-java-service:
    image: yourcompany.com/my-java-service:1.1.0
    environment:
      - JAVA_OPTS=-Xmx4096m -Xms4096m -XX:+UseG1GC -XX:+UseStringDeduplication -XX:-TieredCompilation -XX:+ParallelRefProcEnabled
    deploy:
      mode: replicated
      placement:
        constraints:
          - node.labels.env.lifecyle==prod
      replicas: 40
      resources:
        reservations:
          memory: 5120M
      update_config:
        delay: 1m
        parallelism: 1
      restart_policy:
        condition: none

对于 docker-ce 19.03+,您可以使用 --replicas-max-per-node 选项简单地 create/update 您的服务:

# create service with replicas-max-per-node=10
docker service create --replicas=100 --replicas-max-per-node=10 --name your_service_name your_image_name

# update service with replicas-max-per-node=20
docker service update --replicas-max-per-node=20 your_service_name

read more

更新 (2020-04-10)

- Add 3.8 compose version
    Limit service scale to the size specified by the field deploy.placement.max_replicas_per_node

read more