寫在前面
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