全部產品
Search
文件中心

Container Service for Kubernetes:手動升級ACK叢集

更新時間:Dec 19, 2024

為避免到期版本叢集存在的安全和穩定性風險,保證業務的連貫性,建議您及時升級叢集版本。一個ACK叢集由控制面和節點池兩部分組成。您可以在控制台完成前置檢查以及控制面和節點池的升級。

為什麼需要升級

ACK保證Kubernetes最新3個次要版本的建立。例如,ACK支援Kubernetes 1.28、1.30、1.31三個版本時,1.26版本不再支援建立,到期補丁版本也不再支援建立。更多關於Kubernetes版本支援資訊,請參見Kubernetes版本概覽及機制

到期版本叢集存在安全隱患和穩定性風險。叢集版本到期後,將無法享受新Kubernetes版本支援的功能特性及缺陷修複,無法獲得及時有效支援人員,面臨無法修複安全性漏洞的風險。

建議您及時主動升級叢集,以便享用最新的功能特性、缺陷修複和更及時的支援人員。

重要

升級叢集時,Container ServiceACK會對您的叢集進行前置檢查,但無法保證檢查出所有不相容的功能配置和API。根據安全責任共擔模型,請您通過協助文檔、控制台資訊、站內信等渠道關注版本發布情況,並在叢集升級時提前瞭解相應版本的升級注意事項。

注意事項

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

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

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

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

  • 叢集控制面升級將持續5~8分鐘。在此期間,請勿操作叢集。

關於kubelet和容器運行時升級的注意事項,請參見注意事項

升級說明

升級ACK叢集時,包括控制面升級和節點池升級。大致流程如下。

升級前準備

確定待升級叢集的Kubernetes版本後,仔細閱讀待升級版本的ACK版本發布說明,瞭解升級注意事項,避免升級時潛在的功能不相容問題。請在業務低峰期執行升級操作。

叢集升級中

控制面和節點池升級前,均需通過前置檢查,等待所有檢查項均已通過或修複完成後,可進入後續的升級操作。

  • 控制面升級

    ACK託管叢集ACK Serverless叢集

    採用滾動升級的方式。升級控制面組件,包括kube-apiserverkube-controller-managerkube-scheduler

    ACK專有叢集

    採用原地升級的方式,以更大程度地保證業務的連貫性,減少資料移轉和配置調整的風險。具體流程如下。

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

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

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

    4. 升級Master節點上的kubelet。

  • 節點池升級

    節點池升級包括kubelet和容器運行時的升級。如運行時需從Docker升級為containerd,系統會通過替換系統硬碟(替盤升級)的方式完成升級,即更換磁碟的同時進行作業系統或應用程式的升級。請提前做好系統硬碟的備份工作。其他情況下,保持使用原地升級方式。更多資訊,請參見升級節點池

    ACK將叢集中的節點按照分批策略執行分批升級。

    • 根據節點池依次執行,同一時間只對一個節點池執行升級。

    • 同一個節點池內採用分批升級。第一批升級的節點數為1,後續的批次以2的冪數進行增長。如果暫停後重新恢複升級,依然遵循該分批策略。您可以在節點池升級頁面配置每批升級節點的最大數量,推薦設定為10。具體操作,請參見升級節點池

叢集升級後

核驗叢集版本資訊,檢查節點池運行是否正常,並檢查叢集業務運行是否正常。

操作步驟

您可以先完成控制面的升級,再升級節點池。升級叢集控制面前,請確保叢集節點的版本與控制面版本相同。例如,如果您的控制面版本為1.30,節點版本為1.28,則您需將節點升級至1.30後,然後才能將控制面升級至1.31。

1、升級控制面

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,選擇目的地組群,並在目的地組群右側操作列,選擇更多 > 營運管理 > 叢集升級

  3. 叢集升級頁面手動升級操作對象地區,選擇可升級的叢集版本,選擇升級模式僅控制面,然後單擊前置檢查,提前掃描叢集升級可能存在的潛在風險。

    檢查完成後,您可以在前置檢查結果地區查看檢查結果。

    • 結果正常時,升級檢查成功,請繼續進行叢集升級操作。

    • 結果提示異常時,不影響當前叢集的運行及叢集狀態。您可以參見推薦的解決方案進行修複。關於典型修複方案,請參見叢集檢查項及修複方案

      說明

      Kubernetes 1.20及以後版本的叢集升級前檢查時,會檢查目前的版本是否使用了廢棄API,檢查結果不會影響升級流程,僅作為提示資訊。詳細內容,請參見廢棄API說明

  4. 前置檢查通過後,單擊開始升級,按照頁面提示進行控制面的升級。

    升級過程中,您可以在頁面下方查看升級歷史。

    升級完成後,請在叢集列表查看叢集版本,確認升級是否成功。新擴容節點的版本也將遵循控制面版本。

2、升級節點池

控制面升級完成後,請儘快在業務低峰期完成節點池的升級。節點池升級包括節點kubelet和容器運行時的升級。功能介紹、相關注意事項及操作步驟,請參見升級節點池

叢集升級常見問題

叢集升級會持續多長時間?

ACK託管叢集ACK Serverless叢集控制面升級時間約為5分鐘;ACK專有叢集的Master節點需逐個串列升級,每個Master節點升級時間約為8分鐘。節點池升級時內部節點分批升級,每批升級時間約為5分鐘。

如何處理叢集升級失敗並提示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

相關文檔