K8S基本操作-47-K8S 多節點分次更新
節點列表
假定我們有以下兩節點:
-
controlplane
-
node01
更新 Control Plane 主節點
假定我們要更新的目標版本是 1.27.0 ,如果要更新別的版本請手動修改以下版本
排空 controlplane 節點:
kubectl drain controlplane --ignore-daemonsets
然後執行以下腳本,列出更新資訊與進行更新,並且重啟:
script.sh
apt update
apt-cache madison kubeadm
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm='1.27.0-*' && \
apt-mark hold kubeadm
kubeadm version
kubeadm upgrade plan
sudo kubeadm upgrade apply v1.27.0
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet='1.27.0-*' kubectl='1.27.0-*' && \
apt-mark hold kubelet kubectl
sudo systemctl daemon-reload
sudo systemctl restart kubelet
解除 controlplane 封鎖:
kubectl uncordon controlplane
更新 node01 節點
在 controlplane 上排空 node01:
kubectl drain node01 --ignore-daemonsets
SSH 連入 node01:
ssh root@node01
然後執行以下腳本,列出更新資訊與進行更新,並且重啟:
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm='1.27.0-*' && \
apt-mark hold kubeadm
sudo kubeadm upgrade node
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet='1.27.0-*' kubectl='1.27.0-*' && \
apt-mark hold kubelet kubectl
sudo systemctl daemon-reload
sudo systemctl restart kubelet
回到 controlplane,解除 node01 封鎖:
kubectl uncordon node01
檢查是否所有節點升級完畢:
kubectl get nodes