添加新节点后,Swarm重新调度

使用Rancher的新版本,可以告诉Docker SWARM(1.12+)在我的基础设施中添加新节点时重新分配容器吗?

假设我有4个节点,每个节点上有5个容器,如果我添加第5个节点,我想重新分配我的容器在每个节点上有4个容器。

当一个节点崩溃或closures(缩小我的集群)时,重新调度会触发很好,但是当我通过添加一个或多个节点进行扩展时,什么都不会发生。

这目前不可能做到这一点。 你可以做什么,更新一个服务与docker service update (即:通过添加一个环境variables)

Docker 1.13中的一个新特性是强制更新服务,这将更新服务并强制重新分配节点,所以像docker service update --force $(docker service ls -q)可能是可能的(haven'还没有尝试过,所以还不能确认)。

您可以在这篇博文中find关于此function的更多信息

我有完全相同的问题。 但是由于添加了一个新节点,节点之间的共享存储(使用共享NFS存储共享只读configuration的挂载点)节点失败。

docker服务更新 – 强制$(docker服务ls -q)从版本17.05.0-ce版本,生成89658be不起作用。

scale-up.sh:

 #!/bin/bash echo "Enter the amount by which you want to scale your services (NUMBER), followed by ENTER: " read SCALENUM for OUTPUT in $(docker service ls | awk '{print $2}' | sed -n '1!p') do echo "Scaling up "$OUTPUT" to "$SCALENUM docker service scale $OUTPUT=$SCALENUM done 

scale-down.sh:

 #!/bin/bash for OUTPUT in $(docker service ls | awk '{print $2}' | sed -n '1!p') do echo "Scaling down "$OUTPUT" to 0" docker service scale $OUTPUT=0 done 

请注意,第二个脚本SCALESclosures该服务,使其不可用。 您也可以使用以下命令作为您可能需要的其他脚本的起点,因为这会打印出与典型的docker service ls命令中的其他列无关的服务名称:

 $(docker service ls | awk '{print $2}' | sed -n '1!p') 

我希望这有帮助!