1

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

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

当一个节点崩溃或关闭(缩小我的集群)时,重新调度会很好地触发,但是当我通过添加 1 个或更多节点来扩大规模时,什么也没有发生。

4

2 回答 2

1

目前无法做到这一点。您可以做的是更新服务docker service update(即:通过添加环境变量)

docker 1.13 中的一个新功能将是强制更新服务,这将更新服务并强制重新分配节点,因此docker service update --force $(docker service ls -q)可能会发生类似的事情(尚未尝试过,因此无法确认)。

您可以在此博文中找到有关此功能的更多信息

于 2016-12-02T15:57:54.907 回答
0

我遇到了完全相同的问题。但不是因为添加了一个新节点,而是在节点之间的底层共享存储上出现了节点故障(正在使用共享 NFS 存储来共享只读配置的挂载点)。

docker service update --force $(docker service ls -q) 从版本 Docker 版本 17.05.0-ce 开始,构建 89658be 不起作用。

放大.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

缩小.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

请注意,第二个脚本 SCALES DOWN 服务,使其不可用。您还可以使用以下命令作为您可能需要的其他脚本的起点,因为这会独立于典型 docker service ls 命令中的其他列打印出服务名称:

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

我希望这有帮助!

于 2017-11-06T19:18:58.227 回答