科技新知

上一期筆者就介紹寺過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

馬交野


鬼滅之刃 劇場版 無限列車篇
4DX  28年後
F1 電影
英語版  馴龍記
4DX    馴龍記
4DX  英語版  馴龍記
器子
劇場版 我與機器子
大風殺
那些年的我們
超異能特攻
英語版  史迪仔
私家偵探
拼命三郎
殺神John Wick之芭蕾殺姬
不赦之罪
罪人們
人工殺姬 2.0
關於我和鬼變成家人的那封利是
職業特工隊:最終清算
馴龍記
28年後
史迪仔
死神來了:血脈
鬼滅之刃 劇場版 無限列車篇
4DX  28年後