08_drain a node on the swarm
在之前的小節(jié),所有的節(jié)點(diǎn)的狀態(tài)都是運(yùn)行著的可用狀態(tài)。swarm manager 可以分配任務(wù)給任意可用的節(jié)點(diǎn)。
有時(shí)候,你可能需要對(duì)某臺(tái)服務(wù)器進(jìn)行維護(hù),你需要配置某個(gè)節(jié)點(diǎn)為drain狀態(tài),即排干該節(jié)點(diǎn)上面的所有運(yùn)行的容器。drain狀態(tài)可以防止維護(hù)節(jié)點(diǎn)再收到 管理節(jié)點(diǎn)的指令。
它也意味著管理節(jié)點(diǎn)停止在該服務(wù)器上面運(yùn)行任務(wù),并把復(fù)制任務(wù)放到別的可用節(jié)點(diǎn)上面。
$?docker?node?ls ID???????????????????????????HOSTNAME??STATUS??AVAILABILITY??MANAGER?STATUS 1bcef6utixb0l0ca7gxuivsj0????worker2???Ready???Active 38ciaotwjuritcdtn9npbnkuz????worker1???Ready???Active e216jshn25ckzbvmwlnh5jr3g?*??manager1??Ready???Active????????Leader如果你不在運(yùn)行redis3.0.7的鏡像,回滾到原來(lái)的redis3.0.6,你可以執(zhí)行以下命令
$?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當(dāng)我們想要排干 worker1上面的容器,進(jìn)行維護(hù)時(shí)
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:ReadyAvailability: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?minutesswarm manager 會(huì)停止處于 drain狀態(tài)的節(jié)點(diǎn)上面的容器,并重新在可用的節(jié)點(diǎn)上面啟用該容器。
維護(hù)完畢,從drain狀態(tài)恢復(fù)回 ?active 狀態(tài)
$?docker?node?update?--availability?active?worker1 worker1$?docker?node?inspect?--pretty?worker1 ID:38ciaotwjuritcdtn9npbnkuz Hostname:worker1 Status:State:ReadyAvailability:Active ...snip...當(dāng)你設(shè)置一個(gè)維護(hù)的節(jié)點(diǎn)重新回到 active 狀態(tài)時(shí)候,它能夠重新收到如下的任務(wù)分配:
服務(wù)更新擴(kuò)容
滾動(dòng)更新
當(dāng)你設(shè)置別的節(jié)點(diǎn)為drain
當(dāng)另外一個(gè)節(jié)點(diǎn)上面的任務(wù)運(yùn)行失敗
轉(zhuǎn)載于:https://blog.51cto.com/binuu/1942412
總結(jié)
以上是生活随笔為你收集整理的08_drain a node on the swarm的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MVC 之 Partial View 用
- 下一篇: JavaScript匿名函数以及在循环中