天天看點

使用kubeadm平滑地更新kubenetes叢集(v1.10.2到v1.10.3)

寫在前面

kubernetes是目前最炙手火熱的容器管理、排程、編排平台,不僅擁有全面的生态系統,而且還開源、開放自治,誰貢獻的多,誰的話語權就大,雲提供商都有專門的工程師來從事kubernetes開源項目,其軟體的更新疊代非常快,今天我們就來談談如何使用kubeadm平滑地更新kubenetes叢集到v1.10.3。

備注:kubeadm是一個快速建構kubernetes叢集的工具。

檢視目前叢集版本

使用kubeadm平滑地更新kubenetes叢集(v1.10.2到v1.10.3)

從上面可以看到,master節點kubelete版本低于woker節點,kubernetes的版本傾斜并不支援此情況,詳細原因如下:

使用kubeadm平滑地更新kubenetes叢集(v1.10.2到v1.10.3)

基于這兩個原因,為了避免出現一些不必要的問題,是以決定立即更新叢集。

檢視叢集

檢查哪些版本可用于更新并驗證目前群集是否可更新。

kubeadm upgrade plan [flags]
           
使用kubeadm平滑地更新kubenetes叢集(v1.10.2到v1.10.3)

上圖已經說得很清楚了,我們需要先更新kubeadm,然後才能更新control pannel,而kubeadm并不會自動安裝和管理kubelet、kubectl,是以我們需要手工完成這三個元件的更新。

更新kubeadm kubelet kubectl

yum install -y kubelet kubeadm kubectl
           
使用kubeadm平滑地更新kubenetes叢集(v1.10.2到v1.10.3)

更新叢集元件

kubeadm upgrade apply v1.10.3
           
使用kubeadm平滑地更新kubenetes叢集(v1.10.2到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
           
使用kubeadm平滑地更新kubenetes叢集(v1.10.2到v1.10.3)

再次檢視叢集

使用kubeadm平滑地更新kubenetes叢集(v1.10.2到v1.10.3)
使用kubeadm平滑地更新kubenetes叢集(v1.10.2到v1.10.3)

從上面可以看到,各個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

做一個有底蘊的軟體工作者

繼續閱讀