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