寫在前面
kubernetes是目前最炙手火熱的容器管理、排程、編排平台,不僅擁有全面的生态系統,而且還開源、開放自治,誰貢獻的多,誰的話語權就大,雲提供商都有專門的工程師來從事kubernetes開源項目,其軟體的更新疊代非常快,今天我們就來談談如何使用kubeadm平滑地更新kubenetes叢集到v1.10.3。
備注:kubeadm是一個快速建構kubernetes叢集的工具。
檢視目前叢集版本
從上面可以看到,master節點kubelete版本低于woker節點,kubernetes的版本傾斜并不支援此情況,詳細原因如下:
基于這兩個原因,為了避免出現一些不必要的問題,是以決定立即更新叢集。
檢視叢集
檢查哪些版本可用于更新并驗證目前群集是否可更新。
kubeadm upgrade plan [flags]
上圖已經說得很清楚了,我們需要先更新kubeadm,然後才能更新control pannel,而kubeadm并不會自動安裝和管理kubelet、kubectl,是以我們需要手工完成這三個元件的更新。
更新kubeadm kubelet kubectl
yum install -y kubelet kubeadm kubectl
更新叢集元件
kubeadm upgrade apply v1.10.3
更新網絡插件
kubernetes支援符合CNI規範的所有網絡插件,生産環境一般建議使用calico,其他網絡插件的更新大家可以自行去官網檢視。
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
再次檢視叢集
從上面可以看到,各個control pannel群組件都成功更新完成!!!
備注:指令執行後,可能一段時間kubectl get nodes看到的版本還是沒有改變,dashboard也處于僵死狀态,不要着急,等待大概20分鐘左右就好了,不過服務會很快恢複,基本使用者是無感覺的。
延伸閱讀
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade
https://kubernetes.io/docs/tasks/tools/install-kubeadm
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm
做一個有底蘊的軟體工作者