全部產品
Search
文件中心

Container Service for Kubernetes:升級叢集說明

更新時間:Aug 09, 2025

為避免到期版本叢集存在的安全和穩定性風險,獲得最新的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會進行節點排水操作,遵循PDB的前提下將節點上的Pod驅逐至其他可用節點。為確保服務高可用性,建議採用多副本部署策略,將工作負載分散在多個節點上,同時為關鍵業務配置PDB,控制同時中斷的Pod數量。

      • 替盤升級時,ACK將按照節點池當前的配置(例如節點登入方式、作業系統鏡像、容器運行時版本)重新初始化節點。正常情況下,更新節點池配置需通過編輯節點池來實現。如您通過其他方式對節點進行了更改,升級時這些更改會被覆蓋。

      • 如果節點中的Pod引用了HostPath,且該HostPath指向系統硬碟,替盤升級後HostPath目錄中資料會丟失。

升級流程

ACK叢集升級包括控制面升級和節點池升級,請先執行前置檢查後執行升級,建議在業務低峰期操作。控制面升級完成後,請仔細檢查叢集運行情況,然後繼續升級節點池,保持與控制面版本一致。

1. 升級前準備

  • 根據ACK版本發布說明確定待升級的版本。ACK目前僅支援逐級升級版本,不支援跨多個版本升級,且不支援回退版本。

  • 仔細閱讀待升級版本的版本說明文檔,瞭解升級注意事項、重大變更、功能棄用情況等,避免升級後功能不相容。

  • 規劃叢集維護視窗,可提前執行升級前置檢查識別潛在風險,並在業務低峰期執行升級操作。

2. 控制面升級

  1. 發起前置檢查:執行升級前請發起前置檢查,等待所有檢查項均已通過或修複完成後再執行升級。

    檢查項包括廢棄API(自1.20版本起)、組件相容性、功能配置相容性、叢集狀態、控制面組件狀態等。

  2. 執行升級:前置檢查通過後,執行升級。

    • ACK託管叢集ACK Serverless叢集:ACK託管升級,升級控制面組件,包括kube-apiserverkube-controller-managerkube-schedulerkube-proxy

    • ACK專有叢集:採用原地升級,以更大程度地保證業務的連貫性,減少資料移轉和配置調整的風險。

      展開查看流程

      1. 當ACK檢測到您的叢集需要進一步升級etcd和容器運行時時,將依次升級Master節點上的etcd和容器運行時。

      2. 依次選擇Master節點,一次只升級一個Master節點,並展示當前正在升級的Master節點的編號。

      3. 升級Master組件,包括kube-apiserverkube-controller-managerkube-schedulerkube-proxy

      4. 升級Master節點上的kubelet。

  3. 升級後檢查:檢查叢集版本、核心組件運行狀態、業務應用運行狀態、Pod建立、節點添加等是否正常。

3. 節點池升級

節點池升級包括kubelet和容器運行時的升級。

  1. 發起前置檢查:執行升級前請發起前置檢查,等待所有檢查項均已通過或修複完成後再執行升級。

    檢查項包括節點狀態、系統資源、磁碟狀態、網路環境等。

  2. 配置升級策略並執行升級:選擇升級方式(原地升級或替盤升級),配置批量升級策略(包括每批次執行最多節點數、是否自動建立快照等)。

  3. 升級後檢查:檢查kubelet和容器運行時版本、Pod調度、業務應用運行狀態等是否正常。

4. 其他流程

  • 更換作業系統鏡像:如需升級節點池的作業系統鏡像版本,或切換作業系統類型(例如Alibaba Cloud Linux 2切換至Alibaba Cloud Linux 3),請參見更換作業系統

  • 叢集組件:除控制面組件和部分核心組件(如kube-proxy)外,ACK不會升級其他叢集組件。您可以在控制台的組件管理頁面瞭解待升級的組件,參見組件介紹與發布記錄瞭解其版本相容性和升級要求,並在業務低峰期完成升級。

升級注意事項

控制面升級注意事項

  • ACK叢集的Kubernetes版本需按照支援的版本依次升級,不支援回退。如需多次升級,請在每次升級後觀察叢集業務是否持續穩定運行,再進行下一次升級。

  • 升級前,請參見升級叢集瞭解叢集升級說明。請查看版本說明及各版本說明瞭解待升級版本的版本解讀、廢棄API、升級注意事項等,避免因高版本的功能變更導致業務功能不相容。

  • 控制面升級不會影響應用的正常運行。升級過程中API Server會滾動重啟。如果您的應用強依賴於API Server,需進行重連重試。

  • Kubernetes 1.24不再支援將Docker作為內建容器運行時。叢集由1.22升級至1.24及更高版本,需將節點容器運行時從Docker遷移到containerd,請參見將節點容器運行時從Docker遷移到containerd

  • 叢集控制面升級期間,請儘可能避免對叢集執行營運操作。

節點池升級注意事項

  • 節點伸縮

    • 若叢集啟用了節點伸縮功能,為保證自動調整功能不受影響,叢集在升級成功後會自動更新cluster-autoscaler組件至最新版本。叢集升級後,請確認cluster-autoscaler組件版本是否正常。更多資訊,請參見啟用節點自動調整

    • 叢集升級期間,伸縮模式極速模式的節點可能會因節點關機而無法完成升級。如果升級結束後存在節點因極速模式未被升級,建議手動移除該節點。

  • 升級叢集至1.18版本後,ACK會預設配置節點資源預留。如果叢集未配置資源預留且節點水位較高,升級後存在Pod驅逐後無法被快速調度的風險。請為節點預留部分資源,推薦CPU使用率不超過50%,記憶體使用量率不超過70%。更多資訊,請參見節點資源預留策略

  • 在1.24及以下版本的叢集中,如果工作負載的Pod只配置了啟動探針(Startup Probe),Pod會在kubelet重啟後出現短暫的NotReady現象。建議您採用多副本部署策略,將工作負載分散在多個節點上,以確保在某個節點重啟期間仍有足夠的可用Pod。

  • 如果某個Pod通過LoadBalancer類型的Service的SLB地址訪問同一節點上的另一個Pod,並且該Service的externalTrafficPolicy設定為Local,那麼在節點輪轉後,兩個Pod可能不再位於同一個節點上,繼而導致網路不通。

  • 自訂動作系統鏡像非ACK官方嚴格驗證。ACK無法完全保證升級成功。

  • 叢集升級需要使用yum下載升級所需的軟體包。如果您的叢集曾自行修改節點的網路設定或者使用了自訂的作業系統鏡像,需確保節點的yum能正常使用。您可以執行yum makecache進行檢查。

  • 如果您對叢集有過配置更改,例如開啟了SWAP分區、曾通過黑屏操作修改kubelet配置或運行時配置等,叢集升級過程有可能失敗,或自訂配置可能會被覆蓋。

  • 通過替盤方式升級節點時,ACK會進行節點排水操作,遵循Pod Disruption Budget(PDB)的前提下將節點上的Pod驅逐至其他可用節點。為確保服務高可用性,建議您採用多副本部署策略,將工作負載分散在多個節點上,同時為關鍵業務配置PDB,控制同時中斷的Pod數量。

    節點排水的預設逾時時間為30分鐘。如果在逾時時間內未能完成Pod遷移,ACK將終止本次升級以確保業務穩定性。

  • 通過替盤方式升級節點時,ACK將按照節點池當前的配置(例如節點登入方式、標籤、汙點、作業系統鏡像、運行時版本)重新初始化節點。正常情況下,更新節點池配置需通過編輯節點池來實現。如您通過其他方式對節點進行了更改,升級時這些更改會被覆蓋。

  • 如果節點中的Pod引用了HostPath,且該HostPath指向系統硬碟,替盤升級後HostPath目錄中資料會丟失。

  • 節點池升級過程中僅支援擴容操作,不支援縮容操作。

  • 如果您的節點為游離節點,即未被節點池管理的Worker節點,需參見遷移游離節點至節點池完成遷移。

升級方式

原地升級和替盤升級

控制面升級時,ACK託管叢集ACK Serverless叢集由ACK託管升級;ACK專有叢集採用原地升級。

節點池升級時,ACK提供原地升級和替盤升級兩種方式。

  • 原地升級:直接在現有節點上進行升級,無需替換節點系統硬碟或重新初始化節點,原節點資料不受影響。節點IP、磁碟掛載等ECS執行個體相關配置保持不變,而ACK管理的組件配置(如containerd、kubelet等)可能會根據組件版本差異進行相應調整。

    如需自訂containerd或kubelet配置,請參見自訂節點池kubelet配置自訂節點池containerd配置實現。
  • 替盤升級:通過替換系統硬碟的方式升級,節點會重新初始化。節點IP、資料盤掛載等ECS執行個體相關的配置不發生改變,但系統硬碟上的資料將被刪除。需提前做好系統硬碟的備份工作,建議開啟磁碟快照。

    額外掛載到該節點上的資料盤不受影響。

特殊情境說明

以下情境必須使用替盤升級:

此外,您也可以建立節點池進行輪轉升級:建立新節點池並配置目標環境,通過設定老節點池為不可調度或更新負載調度方式逐步遷移應用至新節點池,最後下線舊節點池。新舊節點池共存期間會產生對應費用。

常見問題

  • 如何手動升級我的叢集?

    請參見手動升級叢集先完成前置檢查,然後執行升級,升級後驗證是否符合預期。

  • 升級叢集時有哪些推薦做法?

    • 保持升級頻率:通過協助文檔、郵件、簡訊等方式關注版本說明,及時規劃升級。建議及時升級叢集。

    • 制定升級規劃:叢集升級不僅是版本號碼的變化,還涉及廢棄API、廢棄功能、重大變化。請根據叢集規模和業務需求提前制定升級規劃,預留叢集維護視窗。建議在業務低峰期升級叢集,升級完成後請充分驗證、觀察,確保升級對業務無影響。同時建議在測試環境先進行升級驗證。

    • 使用自動升級:使用自動升級叢集功能,ACK會提前產生升級計劃,在維護視窗期內觸發前置檢查並升級叢集,降低版本營運壓力。

      您也可以建立ACK託管叢集(智能託管模式),叢集版本會由ACK自動升級。

  • 叢集升級需要多長時間?

    • 控制面:ACK託管叢集ACK Serverless叢集由ACK託管升級,約5分鐘;ACK專有叢集的Master節點需逐一串列升級,每個節點約8分鐘。

    • 節點池:取決於節點分批情況。原地升級每批次約5~10分鐘;替盤升級(不涉及快照)約8分鐘,具體時間長度受排水情況影響;如需建立快照,升級需等待快照結束後執行,快照建立時間受資料量影響。

  • 我能不能不升級叢集版本,永遠停留在一個版本?

    不能。到期版本的潛在安全風險不僅會對您的叢集產生影響,也可能影響阿里雲的整體安全。ACK不允許叢集長期處於到期狀態,會採取強制升級方式將叢集升級至安全穩定的版本。

    請及時升級叢集版本(手動升級叢集),以便享受ACK提供的最新功能特性和更好的支援人員。升級前,請參見版本發布說明瞭解各版本的特性變更和注意事項。推薦您啟用自動升級叢集功能,保持叢集的周期性自動升級。

  • ACK支援跨多個版本升級嗎?

    ACK不支援跨次要版本升級,您需要逐級升級版本。此外,升級叢集控制面前,請確保叢集節點的版本與控制面版本相同。

  • 我的叢集版本很老了,如何快速升級我的叢集版本?

    您可以通過以下兩種方案來實現。

    • 方案一:逐級升級版本。每次升級後,請觀察叢集業務是否持續穩定運行,再進行下一次升級。具體操作,請參見手動升級叢集

    • 方案二:建立一個最新版本的叢集,將叢集應用逐步遷移至新叢集,再下線老叢集。關於如何建立並配置叢集,請參見建立ACK託管叢集

  • 1.22版本的叢集升級至1.24時需要切換Docker至containerd,如何操作?

    ACK在1.24及更高版本中不再支援將Docker作為內建容器運行時,您需要將節點容器運行時從Docker遷移到containerd。

    您可以通過節點池升級功能在原節點池完成運行時切換,也可以建立containerd節點池完成輪轉遷移。具體操作,請參見將節點容器運行時從Docker遷移到containerd

  • ACK如何保證叢集升級的穩定性?

    一個ACK叢集由控制面和節點池兩部分組成。

    • 控制面升級:ACK提供升級前的前置檢查功能,對廢棄API、組件相容性、功能配置相容性、控制面組件等進行檢查。檢查結果不影響叢集中業務的正常運行。如檢查結果異常,可參見控制台擷取修複建議。更多資訊,請參見手動升級叢集

    • 節點池升級:節點池升級包括kubelet和containerd的升級。ACK提供升級前的前置檢查功能,檢查節點狀態、系統資源、磁碟狀態、網路環境等。檢查結果不影響叢集中業務的正常運行。如檢查結果異常,可參見控制台擷取修複建議。

      您也可以自行配置升級策略,例如通過指定待升級節點、設定每批次可升級的最大節點數、配置升級暫停策略等配置控制升級節奏。如節點系統硬碟上有重要業務資料,也可以在升級節點池前為節點建立快照。更多資訊,請參見升級節點池

  • 叢集升級有哪些注意事項?

  • 到期版本的叢集還能正常使用嗎?

    您仍然可以使用到期版本的叢集。但到期版本叢集存在安全隱患和穩定性風險,請參見及時升級至維護中的版本。

    由於ACK叢集主要採用託管架構,這些安全風險不僅會對您的叢集產生影響,也可能會影響阿里雲的整體安全。因此,ACK不允許叢集長期處於到期狀態,會採取強制升級方式將叢集升級至安全穩定的版本,請參見到期版本的強制升級

  • 叢集升級後支援版本回退嗎?

    控制面和節點池kubelet和容器運行時版本升級後均不支援回退。

    升級節點池過程中,如節點系統硬碟上有重要業務資料,您可在升級前為節點建立快照,以便進行節點資料的備份和恢複。

  • 同時需要升級叢集和遷移叢集至ACK託管叢集Pro版,應該先執行哪個?

    推薦您先完成叢集的遷移,觀測業務運行正常後再開始升級叢集。

  • 前置檢查提示廢棄API怎麼辦?

    1.20及以上版本的叢集升級時,ACK會檢查目前的版本是否使用了廢棄API。檢查結果不影響升級流程,僅作為提示資訊。建議在升級前完成修複,避免影響下一版本叢集的正常運行。

  • 前置檢查提示組件版本過低怎麼辦?

    除控制面組件和部分核心組件(如kube-proxy)外,ACK不會升級其他叢集組件。您可以在控制台的組件管理頁面瞭解待升級的組件,參見組件介紹與發布記錄瞭解其版本相容性和升級要求,並在業務低峰期完成升級。

  • 如何處理叢集升級失敗並提示the aliyun service is not running on the instance?

    雲助手不可用,導致升級命令下發失敗。您可以在啟動或停止雲助手後,重新執行叢集升級操作。具體操作,請參見啟動、停止或者卸載雲助手Agent

  • 如何處理節點PLEG not healthy?

    容器或者容器運行時無響應。請重啟節點後重新執行升級。

  • 升級叢集時出現invalid object doesn't have additional properties報錯怎麼辦?

    叢集升級後,需要同步升級本地的kubectl版本。如果未及時升級,在使用本地kubectl的過程中可能會因為與叢集API Server版本不同,發生類似invalid object doesn't have additional properties的報錯。關於如何安裝或升級kubectl,請參見安裝kubectl