參考官方文檔在 ubuntu 18.04 上完成了更新,記錄一下更新步驟。更新第一個 master 節點:放空目前節點,更新前檢查,正式進行更新操作,更新成功;更新其他 master 節點的 kubeadm,更新 worker 節點的 kubeadm 以及 kubelet 與 kubectl
參考官方文檔 Upgrading kubeadm clusters 在 ubuntu 18.04 上完成了更新,記錄一下更新步驟。
一、更新第一個 master 節點
apt-get 安裝 kubeadm 1.17.0
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.17.0-00 && \
apt-mark hold kubeadm
放空目前節點($CP_NODE為目前更新的節點名稱)
kubectl drain $CP_NODE --ignore-daemonsets
更新前檢查
kubeadm upgrade plan
出現告警
[preflight] Running pre-flight checks.
[WARNING CoreDNSUnsupportedPlugins]: there are unsupported plugins in the CoreDNS Corefile
通過 github 上 的 相關 issue 知道這個問題沒有影響,可以忽略。
use the --ignore-preflight-errors=CoreDNSUnsupportedPlugins while upgrading. The proxy plugin will be replaced to use forward automatically.
執行更新指令
kubeadm upgrade apply v1.17.0 --ignore-preflight-errors=CoreDNSUnsupportedPlugins
更新成功
[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.17.0". Enjoy!
解除目前節點的放空狀态
kubectl uncordon $CP_NODE
二、更新其他 master 節點的 kubeadm
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.17.0-00 && \
apt-mark hold kubeadm
kubeadm upgrade node
三、更新所有 master 節點的 kubelet 與 kubectl
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.17.0-00 kubectl=1.17.0-00 && \
apt-mark hold kubelet kubectl && \
systemctl restart kubelet
四、更新 worker 節點的 kubeadm 以及 kubelet 與 kubectl
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.17.0-00 && \
apt-mark hold kubeadm
在 master 上放空所更新的 worker 節點
NODE=k8s-node4 && \
kubectl drain $NODE --ignore-daemonsets
在 worker 節點上執行更新指令
kubeadm upgrade node
在 worker 節點上更新 kubelet 與 kubectl
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.17.0-00 kubectl=1.17.0-00 && \
apt-mark hold kubelet kubectl && \
systemctl restart kubelet
在 master 上解除 worker 節點的放空
kubectl uncordon $NODE
到此所有節點更新完成。
NAME STATUS ROLES AGE VERSION
k8s-master0 Ready master 19d v1.17.0
k8s-master1 Ready master 19d v1.17.0
k8s-master2 Ready master 19d v1.17.0
k8s-node3 Ready <none> 22h v1.17.0
k8s-node4 Ready <none> 22h v1.17.0
k8s-node5 Ready <none> 28h v1.17.0