限制 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
其实没有
有个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
更新 (2020-04-10)
- Add 3.8 compose version
Limit service scale to the size specified by the field deploy.placement.max_replicas_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
其实没有
有个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
更新 (2020-04-10)
- Add 3.8 compose version
Limit service scale to the size specified by the field deploy.placement.max_replicas_per_node