2016-12-02 9 views
1

Rancher의 새 버전을 사용하면 인프라에서 새 노드를 추가 할 때 Docker SWARM (1.12+)에 컨테이너를 재배포 할 수 있습니까?새로운 노드를 추가 한 후 Swarm rescheduling

각 노드에 5 개의 컨테이너가있는 노드가 4 개인 경우 5 번째 노드를 추가하면 각 노드에 4 개가되도록 컨테이너를 재배포하고 싶습니다.

노드가 다운되거나 클러스터가 다운되면 (클러스터 축소) 재 스케줄링이 잘 수행되지만 노드를 하나 이상 추가하여 확장하면 아무 일도 일어나지 않습니다.

답변

1

현재이 작업을 수행 할 수 없습니다. 할 수있는 일은 docker service update으로 서비스를 업데이트하는 것입니다 (예 : 환경 변수를 추가하여)

도커 1.13의 새로운 기능은 서비스를 강제 업데이트하여 노드를 재배포합니다 , docker service update --force $(docker service ls -q)과 같은 것이 가능할 수도 있습니다 (아직 시도하지 않았으므로 아직 확인할 수 없습니다).

당신은 내가 똑같은 문제가 발생하고이 blogpost

0

에서이 기능에 대한 자세한 정보를 찾을 수 있습니다. 하지만 새로운 노드를 추가하기보다는 노드 사이의 공유 저장 장치에 노드 오류가있었습니다 (공유 NFS 저장소를 사용하여 읽기 전용 구성의 공유 지점을 공유하는 경우).

Docker 버전 17.05.0-ce, build 89658be 버전의 docker 서비스 업데이트 --force $ (docker service ls -q)가 작동하지 않습니다.

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 : 두 번째 스크립트는 사용할 수 없게 만드는 서비스를 DOWN 저울 것을

#!/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') 

난이 도움이되기를 바랍니다!