Kubernetes CKA課程筆記 74
- 接著進行wokrer node的升級作業(一台台做)
執行Master Node升級
1.執行worker1上的kubeadm升級:
- 首先進到worker1:
- 首先還是要先切換到root帳號!!:
- 後面依樣依據官方文件作業:
- 如上,執行kubeadm升級,執行:
apt-get update && \
apt-get install -y --allow-change-held-packages kubeadm=1.22.0-00
- 依樣可以透過指令確認kubeadm版本:
2.執行worker1上透過升級後的kubeadm,升級kubelet configuration:
- 透過升級後的kubeadm升級kubelet設定檔,執行:
kubeadm upgrade node
3.讓worker1完成drain,透過master執行:
- 這邊很重要的是,執行worker機台的drain要從master上發動
- 在master node上執行以下指令:
kubectl drain <node-to-drain> --ignore-daemonsets
- 特別註記一下,上面講師做完時有出現錯誤,內容是說
- 無法移除並非經由ReplicationController, ReplicaSet,Job,DaemonSet or SettefulSet建立的Pods
- 也就是如果有建立臨時Pod例如透過以下指令建立的,就無法移除(evict):
kubectl run <pod名稱> --image=<選擇的image名稱>
- 抑或是直接透過Pod的Configuration file,用kubectl apply指令建的Pod
- 都不能移除,也無法Re-Schedule到另一台Worker去
- 所以若有出現跟講師依樣狀況則剛剛的指令要改為執行如下:
kubectl drain <node-to-drain> --ignore-daemonsets --force
- 然後過程會看到那些臨時Pod被evict(排除)
- 此時依樣在master檢查一下Pod分布狀態:
- 或是看看全部nameSpace的:
4.執行worker1上升級kubelet與kubectl:
- 從上述master指揮完成worker1的drain後
- 回到worker1,並且還是在root狀態:
- 繼續參照官方doc:
- 執行升級指令:
apt-get update && \
apt-get install -y --allow-change-held-packages kubelet=1.22.0-00 kubectl=1.22.0-00
- 接著依樣如官網doc:
- 重啟kubelet服務,執行(已經root了,不用在sudo):
systemctl daemon-reload
systemctl restart kubelet
5.讓worker1解除封鎖,透過master執行::
- 接著在看到官網doc,恢復worker1變回可以佈署Pod的狀態:
- 執行上述的Uncordon(解封鎖)指令,記得是在master上執行!!:
kubectl uncordon <node-to-drain>
- 以上,就完成了worker1的升級
- 後面worker2就是做一樣動作而已,就不重複筆記,就當練習做完
- 在worker2升級過程我特別注意到一個有趣的東西:
- 最後完成如下圖:
以上就已經完成了整個K8s Cluster的升級作業了!!!