添加新节点后 Swarm 重新调度
Swarm rescheduling after adding new node
有了新版本的 Rancher,当我在基础设施中添加新节点时,是否可以告诉 docker SWARM (1.12+) 重新分发容器?
假设我有 4 个节点,每个节点有 5 个容器,如果我添加第 5 个节点,我想重新分配我的容器以在每个节点上有 4 个容器。
当节点崩溃或关闭(缩小我的集群)时,重新调度会很好地触发,但是当我通过添加 1 个或更多节点进行扩展时,没有任何反应。
目前无法执行此操作。您可以做的是使用 docker service update
更新服务(即:通过添加环境变量)
docker 1.13 中的一项新功能将是强制更新服务,这将更新服务并强制重新分配节点,因此 docker service update --force $(docker service ls -q)
之类的东西可能是可能的(还没有'还没试过,所以还不能确认)。
您可以在 blogpost
中找到有关此功能的更多信息
我遇到了完全相同的问题。但是不是因为添加新节点,我在节点之间的底层共享存储上遇到了节点故障(使用共享 NFS 存储来共享只读配置的挂载点)。
从版本 Docker 版本 17.05.0-ce 开始,docker 服务更新 --force $(docker service ls -q) 版本 89658be 不起作用。
规模-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 }' | sed -n '1!p')
do
echo "Scaling up "$OUTPUT" to "$SCALENUM
docker service scale $OUTPUT=$SCALENUM
done
规模-down.sh:
#!/bin/bash
for OUTPUT in $(docker service ls | awk '{print }' | sed -n '1!p')
do
echo "Scaling down "$OUTPUT" to 0"
docker service scale $OUTPUT=0
done
请注意,第二个脚本缩小了服务,使其不可用。您还可以使用以下命令作为您可能需要的其他脚本的起点,因为这会在典型的 docker service ls 命令中独立于其他列打印出服务名称:
$(docker service ls | awk '{print }' | sed -n '1!p')
希望对您有所帮助!
有了新版本的 Rancher,当我在基础设施中添加新节点时,是否可以告诉 docker SWARM (1.12+) 重新分发容器?
假设我有 4 个节点,每个节点有 5 个容器,如果我添加第 5 个节点,我想重新分配我的容器以在每个节点上有 4 个容器。
当节点崩溃或关闭(缩小我的集群)时,重新调度会很好地触发,但是当我通过添加 1 个或更多节点进行扩展时,没有任何反应。
目前无法执行此操作。您可以做的是使用 docker service update
更新服务(即:通过添加环境变量)
docker 1.13 中的一项新功能将是强制更新服务,这将更新服务并强制重新分配节点,因此 docker service update --force $(docker service ls -q)
之类的东西可能是可能的(还没有'还没试过,所以还不能确认)。
您可以在 blogpost
中找到有关此功能的更多信息我遇到了完全相同的问题。但是不是因为添加新节点,我在节点之间的底层共享存储上遇到了节点故障(使用共享 NFS 存储来共享只读配置的挂载点)。
从版本 Docker 版本 17.05.0-ce 开始,docker 服务更新 --force $(docker service ls -q) 版本 89658be 不起作用。
规模-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 }' | sed -n '1!p')
do
echo "Scaling up "$OUTPUT" to "$SCALENUM
docker service scale $OUTPUT=$SCALENUM
done
规模-down.sh:
#!/bin/bash
for OUTPUT in $(docker service ls | awk '{print }' | sed -n '1!p')
do
echo "Scaling down "$OUTPUT" to 0"
docker service scale $OUTPUT=0
done
请注意,第二个脚本缩小了服务,使其不可用。您还可以使用以下命令作为您可能需要的其他脚本的起点,因为这会在典型的 docker service ls 命令中独立于其他列打印出服务名称:
$(docker service ls | awk '{print }' | sed -n '1!p')
希望对您有所帮助!