Docker swarm - add new worker - re scale the servi

2019-06-09 21:20发布

问题:

I have created a docker manager. Created a service and scaled to 5 instances in the same server.

I added two workers. Now, How do I redistribute 5 instances of the applications across 3 nodes?

Is there any option to do without doing everything from the beginning?

docker service scale id=5 does it. Is it the right way? I don't want to restart already existing instances. It restarts at node 1.

docker service update servicename

I remove one node from the cluster by docker swarm leave. I updated the service. All of my instances are replicated within remaining nodes.

Glad, Update worked as expected. But, there is another twist.

I added the node back. Then I updated the service. Now, all of my instances are running as in the earlier case. It doesn't make use of the new node.

How does it work?

回答1:

To redistribute, you don't need to destroy and recreate the service, but the containers will all be bounced in a rolling upgrade. The command is docker service update --force $service_name


When adding or removing nodes, docker will only reschedule when there is a difference between the current and target state. It doesn't prematurely kill running containers to reschedule then on new nodes until you do the above update command.