為避免到期版本叢集存在的安全和穩定性風險,獲得最新的Kubernetes能力和支援人員,建議您及時升級叢集版本。ACK提供升級前置檢查,支援配置不同升級策略和升級節奏,並提供升級進度監控,以便實現叢集的平滑升級。
為什麼需要升級
ACK保證Kubernetes最新3個次要版本的建立。例如,ACK支援Kubernetes 1.31、1.32、1.33三個版本時,1.30版本不再支援建立,到期補丁版本也不再支援建立,詳情請參見版本說明。
到期版本叢集存在安全隱患和穩定性風險。叢集版本到期後,將無法享受新Kubernetes版本支援的功能特性及缺陷修複,無法獲得及時有效支援人員,面臨無法修複安全性漏洞的風險。
建議您及時主動升級叢集,以便享用最新的功能特性、缺陷修複和更及時的支援人員。
升級叢集時,ACK會對您的叢集進行前置檢查,但無法保證檢查出所有不相容的功能配置和API。根據安全責任共擔模型,請您通過協助文檔、控制台資訊、站內信等渠道關注版本發布情況,並在叢集升級時提前瞭解相應版本的升級注意事項。
升級影響
ACK提供分階段、分批次的升級策略,確保叢集升級過程中業務Pod的連續性和穩定性。
前置檢查:控制面和節點池升級前均提供前置檢查,識別叢集中潛在的相容性風險,例如廢棄API、組件版本、節點狀態、磁碟狀態等,並提供修複建議。前置檢查結果不會影響叢集業務的運行。
控制面:
ACK託管叢集:API Server由ACK託管運行,升級過程中會滾動重啟,正常情況下不影響應用的正常運行。當應用強依賴於API Server時可能因短暫斷鏈而需要重連重試。
ACK專有叢集:升級過程中,ACK會對每個Master節點逐個進行原地升級。正常情況下不影響應用的正常運行。當應用強依賴於API Server時可能因短暫斷鏈而需要重連重試。
節點池:分批升級節點,確保服務連續性。支援自訂批量升級策略(每批次執行最多節點數、每批次間隔時間等),控制升級對業務的影響。
原地升級時,不涉及磁碟替換和節點初始化,業務Pod正常運行,服務不會中斷。
替盤升級時,涉及節點排水、系統硬碟更換和節點初始化。但請注意以下影響:
升級流程
ACK叢集升級包括控制面升級和節點池升級,請先執行前置檢查後執行升級,建議在業務低峰期操作。控制面升級完成後,請仔細檢查叢集運行情況,然後繼續升級節點池,保持與控制面版本一致。
1. 升級前準備
根據ACK版本發布說明確定待升級的版本。ACK目前僅支援逐級升級版本,不支援跨多個版本升級,且不支援回退版本。
仔細閱讀待升級版本的版本說明文檔,瞭解升級注意事項、重大變更、功能棄用情況等,避免升級後功能不相容。
規劃叢集維護視窗,可提前執行升級前置檢查識別潛在風險,並在業務低峰期執行升級操作。
2. 控制面升級
發起前置檢查:執行升級前請發起前置檢查,等待所有檢查項均已通過或修複完成後再執行升級。
檢查項包括廢棄API(自1.20版本起)、組件相容性、功能配置相容性、叢集狀態、控制面組件狀態等。
執行升級:前置檢查通過後,執行升級。
ACK託管叢集、ACK Serverless叢集:ACK託管升級,升級控制面組件,包括kube-apiserver、kube-controller-manager、kube-scheduler、kube-proxy。
ACK專有叢集:採用原地升級,以更大程度地保證業務的連貫性,減少資料移轉和配置調整的風險。
升級後檢查:檢查叢集版本、核心組件運行狀態、業務應用運行狀態、Pod建立、節點添加等是否正常。
3. 節點池升級
節點池升級包括kubelet和容器運行時的升級。
發起前置檢查:執行升級前請發起前置檢查,等待所有檢查項均已通過或修複完成後再執行升級。
檢查項包括節點狀態、系統資源、磁碟狀態、網路環境等。
配置升級策略並執行升級:選擇升級方式(原地升級或替盤升級),配置批量升級策略(包括每批次執行最多節點數、是否自動建立快照等)。
升級後檢查:檢查kubelet和容器運行時版本、Pod調度、業務應用運行狀態等是否正常。
4. 其他流程
升級注意事項
升級方式
原地升級和替盤升級
控制面升級時,ACK託管叢集、ACK Serverless叢集由ACK託管升級;ACK專有叢集採用原地升級。
節點池升級時,ACK提供原地升級和替盤升級兩種方式。
原地升級:直接在現有節點上進行升級,無需替換節點系統硬碟或重新初始化節點,原節點資料不受影響。節點IP、磁碟掛載等ECS執行個體相關配置保持不變,而ACK管理的組件配置(如containerd、kubelet等)可能會根據組件版本差異進行相應調整。
如需自訂containerd或kubelet配置,請參見自訂節點池kubelet配置、自訂節點池containerd配置實現。
替盤升級:通過替換系統硬碟的方式升級,節點會重新初始化。節點IP、資料盤掛載等ECS執行個體相關的配置不發生改變,但系統硬碟上的資料將被刪除。需提前做好系統硬碟的備份工作,建議開啟磁碟快照。
額外掛載到該節點上的資料盤不受影響。
特殊情境說明
以下情境必須使用替盤升級:
自1.24版本起不再支援將Docker作為內建容器運行時,需將容器運行時從Docker遷移至containerd。
詳情請參見將節點容器運行時從Docker遷移到containerd。
更換作業系統類型,例如自1.30版本起不再支援CentOS和Alibaba Cloud Linux 2,可轉而使用其他支援中的作業系統。
操作步驟,請參見更換作業系統。
升級Windows節點池時,需通過替盤的方式進行升級。
此外,您也可以建立節點池進行輪轉升級:建立新節點池並配置目標環境,通過設定老節點池為不可調度或更新負載調度方式逐步遷移應用至新節點池,最後下線舊節點池。新舊節點池共存期間會產生對應費用。
常見問題
如何手動升級我的叢集?
升級叢集時有哪些推薦做法?
叢集升級需要多長時間?
我能不能不升級叢集版本,永遠停留在一個版本?
ACK支援跨多個版本升級嗎?
我的叢集版本很老了,如何快速升級我的叢集版本?
1.22版本的叢集升級至1.24時需要切換Docker至containerd,如何操作?
ACK如何保證叢集升級的穩定性?
叢集升級有哪些注意事項?
到期版本的叢集還能正常使用嗎?
叢集升級後支援版本回退嗎?
同時需要升級叢集和遷移叢集至ACK託管叢集Pro版,應該先執行哪個?
前置檢查提示廢棄API怎麼辦?
前置檢查提示組件版本過低怎麼辦?
如何處理叢集升級失敗並提示the aliyun service is not running on the instance?
如何處理節點PLEG not healthy?
升級叢集時出現
invalid object doesn't have additional properties報錯怎麼辦?