參考官方文檔 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-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
執行升級命令
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-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
在 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