在 Kubernetes 的更新時可以跟著官方文件的步驟進行,今天會介紹如何更新 Kubernetes,會以 1.32 更新至 1.33 為例,更新時會分為 (1) Kubeadm 更新以及 (2) kubelet 更新,更新 Kubeadm 時需要先判斷是更新 ControlPlane 還是 WorkNode,而在 Kubelet 中並沒有差別。
在更新時需要依序更新
systemctl status kubelet
查看 kubelet 狀態,然後有時候在配置時會有一些覆蓋值,因此實際配置需要在 journalctl -xeu kubelet
查看killall -s SIGTERM kube-apiserver # trigger a graceful kube-apiserver shutdown
sleep 20 # wait a little bit to permit completing in-flight requests
kubeadm upgrade ... # execute a kubeadm upgrade command
在上述考量都確認沒有風險後,我們就可以開始對 Control Plane 進行更新了!
(一) Control Plane 更新
# On your system, this configuration file could have a different name
pager /etc/apt/sources.list.d/kubernetes.list
# 將原先 v1.32 修改為 v1.33
deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.33/deb/ /
sudo apt update
sudo apt-cache madison kubeadm
# replace x in 1.33.x-* with the latest patch version
sudo apt-mark unhold kubeadm && \
sudo apt-get update && sudo apt-get install -y kubeadm='1.33.x-*' && \
sudo apt-mark hold kubeadm
kubeadm version
sudo kubeadm upgrade plan
sudo kubeadm upgrade apply v1.33.x
會需要等待幾分鐘,當更新完後會出現以下說明
[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.33.x". Enjoy!
[upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.
(二) WorkNode 更新
對於 WorkNode 更新會有一個小不同,需要將 Control Plane 中第五項的 sudo kubeadm upgrade apply
修改為 sudo kubeadm upgrade node
,因此步驟如下
# replace <node-to-drain> with the name of your node you are draining
kubectl drain <node-to-drain> --ignore-daemonsets
# On your system, this configuration file could have a different name
pager /etc/apt/sources.list.d/kubernetes.list
# 將原先 v1.32 修改為 v1.33
deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.33/deb/ /
sudo apt update
sudo apt-cache madison kubeadm
# replace x in 1.33.x-* with the latest patch version
sudo apt-mark unhold kubeadm && \
sudo apt-get update && sudo apt-get install -y kubeadm='1.33.x-*' && \
sudo apt-mark hold kubeadm
kubeadm version
sudo kubeadm upgrade node
會需要等待幾分鐘,當更新完後會出現以下說明
[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.33.x". Enjoy!
[upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.
(三) Kubelet 更新
# replace x in 1.33.x-* with the latest patch version
sudo apt-mark unhold kubelet kubectl && \
sudo apt-get update && sudo apt-get install -y kubelet='1.33.x-*' kubectl='1.33.x-*' && \
sudo apt-mark hold kubelet kubectl
sudo systemctl daemon-reload
sudo systemctl restart kubelet
# replace <node-to-uncordon> with the name of your node
kubectl uncordon <node-to-uncordon>
以上就是比較簡單的說明如何在 Control Plane 以及 Work Node 在 kubeadm 和 kubelet 的更新
參考資料
Upgrading kubeadm clusters
Changing The Kubernetes Package Repository