Kubernetes CKA課程筆記 73

Upgrade K8s Cluster — 實際Demo升級Cluster — Master

ZONGRU Li
7 min readDec 4, 2021

目前當下的K8s Cluster版本:

是v1.21.0

首先將執行Master Node升級

1.執行Master Node上的kubeadm升級:

  • 首先登入master後,安裝上都是使用root,所以先切換到root帳號,執行:

sudo -i

  • 接著在root身分下,先把安裝套件清單更新,執行:

apt update

看起來是去幾個url更新了清單

如上圖,這邊講師沒提,但是我想試試上面提示的察看清單指令看看:

apt list --upgradable

  • 回過頭,僅確認kubeadm tool,執行:

apt-cache madison kubeadm

  • 也可以先透過kubeadm指令確認當前版本,執行:

kubeadm version

要看Major跟Minor
  • 並且在執行升級過程,建議都打開著官方doc:
link
  • 然後可以邊看邊操作,並查看所需要知道的細節
  • 同上頁面往下滑就看到我們剛剛完成的動作部分:
link
  • 接著繼續往下滑,看到以下步驟:
link
  • 如上要求在使用apt-get版本為1.1以上的情況
  • 所以暫時先執行apt-get版本確認指令先確定,執行:

apt-get --version

看起來沒問題,超過1.1版

接著就是執行上面doc文件的兩步,第一步執行:

apt-get update

  • 接著執行第二步,就是執行kubeadm升級,小心後面的x要自己改!,執行:
記得改x成自己要的版本號!

apt-get install -y --allow-change-held-packages kubeadm=1.22.0-00

  • 上面指令上的held就是讓OS知道,不要任意自動更新這個軟體版本
順利完成!!
  • 接著確認kubeadm當前版本,再次執行:

kubeadm version

2.執行Master Node上Components升級:

  • 接著參考官方doc,提供了一個預覽指令,看看接下來會升級那些東西

kubeadm upgrade plan

提供了K8s Admin一個不錯的預覽!
  • 參考上面指令,我們改成我們要升級的1.22.0版就好,執行:

kubeadm upgrade apply v1.22.0

  • 執行過程我大概跑了2~3分鐘:
過程圖1
過程圖2
過程圖3
  • 此時我們可以暫時退出root,身分,並執行確認Pod指令,會看到:
除了CNI的實作weave是48天前!!
  • 但是若是確認node版本,則會看到:
因為node版本是看kubelet,但此時我們kubelet還沒升級!!

3.執行Master Node上kubelet & kubectl升級前準備 →Drain the Node!!!:

  • 如同上一篇說的,kubelet是指揮調度Pods
  • 在升級kubelet前要先把Pods清空,參考官方doc要執行如下動作:
link

kubectl drain <hostname,這邊就是master>

執行會出錯
  • 所以執行drain動作指令改執行:

kubectl drain master --ignore-daemonsets

  • 接著可以再用確認Node指令看到:

4.執行Master Node上kubelet & kubectl實際升級:

  • 依樣參考到官方doc接下來的動作:
記得改!!
  • 參照上述指令執行:
apt-get update && \
apt-get install -y --allow-change-held-packages kubelet=1.22.0-00 kubectl=1.22.0-00
失敗...
  • 切回root先!!!
  • 在用root執行一次!!
成功完成升級!!但是尚未生效
  • 繼續參照到官網doc:
link
  • 如上執行(因為已經是root了,不用sudo):
systemctl daemon-reload
systemctl restart kubelet
完成重啟kubelet
  • 接著檢查一下kubelet的服務狀態,執行:

systemctl status kubelet

很正常運作!!

至此就完成kubelet與kubectl的升級

5.執行Master Node上,Node狀態Uncordon(解封鎖!):

  • 依樣看到官方doc:
將master狀態恢復成可以起Pod,做uncordon(解除封鎖)
  • 不過記得這不需要root,所以先離開root,執行:
  • 接著執行解除封鎖指令:

kubectl uncordon <hostname,這邊就是master>

  • 接著當然要看一下node狀態確認一下:

6.特別注意若是在多台Master Nodes狀態!!

  • 官網doc上有特別這一段:
link
  • 其餘步驟則都是一樣

以上即完成了Master Node升級,為了明顯區分

我把Worker Nodes升級放下一篇

參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet