科技新知

上一期筆者就介紹寺過swarm的相容性,可以任意地刪除其中node、加入新的node,系統會自動同步各機狀態。今日,我們就來討論一下加減的流程吧。

實戰輪調流程

假設我們有5個 node,都為manager,各個 docker 版本都為28.0.4 ,我們將要關掉node 5 (ubuntu 22),並加入node 6 (ubuntu24),輪調流程如下

  1. 如果node5有vvip,login node 5,關掉vvip
    • systemctl stop keepalived
  2. login node1, 把node5降為drain模式,變為worker,並從群集中刪除
    • docker node update --availability drain node5
    • docker node demote node5
      • 若然node5不是直接關機、刪除,只想好好地離開群集,可以 login node5, 在node5上預先執行 docker swarm leave
    • docker node rm --force node5
      • 如果之前node5有好好地離開群集,而且狀態已經轉為down,那麼就不用"force"了,用最保守的刪除指令就可以 docker node rm node5
  3. login node1, 取得manager token
    • docker swarm join-token manager
  4. node5關機,新增node6,使用相容的ip段,或者使用node5的ip
  5. login node6, 加入群集,設定vvip
    • docker swarm join --token xxxx XX_IP:XX_PORT
    • systemctl stop keepalived

這陷阱這陷阱 偏我遇上

上述的操作,有一些可能的陷阱,筆者就剛好踩過,未來不知道會不會有官方保證

  • docker的版本需要相同,不同版本可能不能加入群集,例如
    • docker 28.0.4 不能加到 docker 27.5.1。
    • docker 27.2.x 不能加到 docker 27.5.1。
  • docker swarm,官方雖然宣稱支援不同版本共存,但這指的是已加入的node,在不解綁的情況下原機升級。
  • 在swarm已有多版本共存的情況下,有一個node選擇完全脫離,它想再加入,也是會失敗的。可能這不是docker自身的限制,而是底層library的相容性問題。筆者在實測不同版本時,就得到這樣的error。docker credentials: cannot check peer: missing selected ALPN property

馬交野


MX4D 鬼滅之刃 劇場版 無限列車篇
英語版  外星奇遇記
4DX  超人
IMAX with Laser 超人
4DX  F1電影
雄獅少年2
MX4D F1電影
F1 電影
野黨
F1電影
愉快動物餅大電影
私家偵探
殺神John Wick之芭蕾殺姬
殺神JOHN WICK外傳:芭蕾殺姬
28 年後
人工殺姬 2.0
外星奇遇記 英語版
超人
外星奇遇記
職業特工隊:最終清算
侏羅紀世界:重生
馴龍記
史迪仔
死神來了:血脈
獵金•遊戲
鬼滅之刃 劇場版 無限列車篇
MX4D 鬼滅之刃 劇場版 無限列車篇