2016-12-02 60 views
1

使用新版本的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

0

我有完全相同的問題的詳細信息。但並非因爲添加新節點,而是節點之間的共享存儲(使用共享NFS存儲共享只讀配置的掛載點)時節點失敗。

碼頭服務更新 - 強制$(碼頭服務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 

注意,第二個腳本縮小後的服務,使其無法使用。您還可以在一個典型的搬運工服務ls命令使用以下命令爲出發點,您可能需要其他腳本,因爲這樣打印出的服務名稱獨立於其他列:

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

我希望這有助於!