08_drain a node on the swarm
阿新 • • 發佈:2017-06-27
docker swarm
在之前的小節,所有的節點的狀態都是運行著的可用狀態。swarm manager 可以分配任務給任意可用的節點。
有時候,你可能需要對某臺服務器進行維護,你需要配置某個節點為drain狀態,即排幹該節點上面的所有運行的容器。drain狀態可以防止維護節點再收到 管理節點的指令。
它也意味著管理節點停止在該服務器上面運行任務,並把復制任務放到別的可用節點上面。
$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS 1bcef6utixb0l0ca7gxuivsj0 worker2 Ready Active 38ciaotwjuritcdtn9npbnkuz worker1 Ready Active e216jshn25ckzbvmwlnh5jr3g * manager1 Ready Active Leader
如果你不在運行redis3.0.7的鏡像,回滾到原來的redis3.0.6,你可以執行以下命令
$ docker service create --replicas 3 --name redis --update-delay 10s redis:3.0.6 c5uo6kdmzpon37mgj9mwglcfw
$ docker service ps redis NAME IMAGE NODE DESIRED STATE CURRENT STATE redis.1.7q92v0nr1hcgts2amcjyqg3pq redis:3.0.6 manager1 Running Running 26 seconds redis.2.7h2l8h3q3wqy5f66hlv9ddmi6 redis:3.0.6 worker1 Running Running 26 seconds redis.3.9bg7cezvedmkgg6c8yzvbhwsd redis:3.0.6 worker2 Running Running 26 seconds
當我們想要排幹 worker1上面的容器,進行維護時
docker node update --availability drain <NODE-ID>
docker node update --availability drain worker1 worker1
$ docker node inspect --pretty worker1 ID:38ciaotwjuritcdtn9npbnkuz Hostname:worker1 Status: State:Ready Availability:Drain ...snip...
可以看到
Availability:Drain
$ docker service ps redis NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR redis.1.7q92v0nr1hcgts2amcjyqg3pq redis:3.0.6 manager1 Running Running 4 minutes redis.2.b4hovzed7id8irg1to42egue8 redis:3.0.6 worker2 Running Running About a minute \_ redis.2.7h2l8h3q3wqy5f66hlv9ddmi6 redis:3.0.6 worker1 Shutdown Shutdown 2 minutes ago redis.3.9bg7cezvedmkgg6c8yzvbhwsd redis:3.0.6 worker2 Running Running 4 minutes
swarm manager 會停止處於 drain狀態的節點上面的容器,並重新在可用的節點上面啟用該容器。
維護完畢,從drain狀態恢復回 active 狀態
$ docker node update --availability active worker1 worker1
$ docker node inspect --pretty worker1 ID:38ciaotwjuritcdtn9npbnkuz Hostname:worker1 Status: State:Ready Availability:Active ...snip...
當你設置一個維護的節點重新回到 active 狀態時候,它能夠重新收到如下的任務分配:
服務更新擴容
滾動更新
當你設置別的節點為drain
當另外一個節點上面的任務運行失敗
本文出自 “清風柳絮” 博客,請務必保留此出處http://binuu.blog.51cto.com/801317/1942412
08_drain a node on the swarm