天天看點

Kubernetes 更新記錄:從 1.16.3 更新至 1.17.0

參考官方文檔在 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
           
k8s

繼續閱讀