升級叢集
本頁面概述了升級 Kubernetes 叢集應遵循的步驟。
Kubernetes 專案建議及時升級到最新的補丁版本,並確保你正在執行受支援的 Kubernetes 次要版本。遵循此建議有助於你保持安全。
升級叢集的方式取決於你最初如何部署它以及後續的任何更改。
總的來說,你執行的步驟包括:
準備工作
你必須有一個現有叢集。本頁面介紹瞭如何從 Kubernetes 1.33 升級到 Kubernetes 1.34。如果你的叢集當前未執行 Kubernetes 1.33,請查閱你計劃升級到的 Kubernetes 版本的文件。
升級方法
kubeadm
如果你的叢集是使用 kubeadm
工具部署的,請參閱升級 kubeadm 叢集以獲取有關如何升級叢集的詳細資訊。
升級集群后,請記住安裝最新版本的 kubectl
。
手動部署
注意
這些步驟不包括第三方擴充套件,例如網路和儲存外掛。你應該按照以下順序手動更新控制平面:
- etcd(所有例項)
- kube-apiserver(所有控制平面主機)
- kube-controller-manager
- kube-scheduler
- 雲控制器管理器(如果你使用)
此時,你應該安裝最新版本的 kubectl
。
對於叢集中的每個節點,排空該節點,然後將其替換為使用 1.34 kubelet 的新節點,或者升級該節點上的 kubelet 並將該節點重新投入使用。
注意
在升級 kubelet 之前排空節點可確保 Pod 被重新接納並重新建立容器,這對於解決某些安全問題或其他重要錯誤可能是必要的。其他部署
請參閱你的叢集部署工具的文件,以瞭解維護的推薦設定步驟。
升級後任務
切換叢集的儲存 API 版本
叢集中活躍的 Kubernetes 資源在叢集內部表示為序列化到 etcd 的物件,這些物件是使用特定 API 版本寫入的。
當支援的 API 發生變化時,這些物件可能需要以較新的 API 重新寫入。不這樣做最終將導致資源無法再由 Kubernetes API 伺服器解碼或使用。
對於每個受影響的物件,使用最新支援的 API 獲取它,然後也使用最新支援的 API 將其寫回。
更新清單
升級到新的 Kubernetes 版本可以提供新的 API。
你可以使用 kubectl convert
命令在不同的 API 版本之間轉換清單。例如:
kubectl convert -f pod.yaml --output-version v1
kubectl
工具將 pod.yaml
的內容替換為一個清單,其中 kind
設定為 Pod(未更改),但 apiVersion
已修改。
裝置外掛
如果你的叢集正在執行裝置外掛,並且節點需要升級到具有較新裝置外掛 API 版本的 Kubernetes 版本,則必須在節點升級之前升級裝置外掛以支援這兩個版本,以確保在升級過程中裝置分配繼續成功完成。
有關更多詳細資訊,請參閱API 相容性和Kubelet 裝置管理器 API 版本。