為避免到期版本叢集潛在的安全性和穩定性風險,同時享有新叢集版本的新功能,建議您隨ACK Edge叢集的版本發布節奏及時升級叢集。ACK Edge叢集採用原地升級方式進行升級,本文為您介紹ACK Edge叢集升級的注意事項、升級流程和操作。
為什麼需要升級叢集版本
降低安全和穩定性風險:新版本修複發現的安全和穩定性漏洞,長期使用到期版本叢集會給業務帶來安全和穩定性風險。
享受更好的維護支援:對於到期版本,ACK Edge叢集不再提供安全補丁和問題修複,也無法保證到期版本的支援人員品質。使用新版本能夠讓您享受更好的支援人員和答疑服務。
使用新版本的新功能:ACK Edge叢集發布的新版本包含新的功能和改進,為您帶來更好的開發和營運體驗。
注意事項
ACK Edge叢集支援的升級範圍為1.18到1.24版本,且只能按照支援的版本依次升級,不支援跨版本升級,不支援回退。
例如,從1.18版本升級到1.22版本,需要進行兩次升級操作,先從1.18升級到1.20版本,再從1.20升級到1.22版本。
說明目前已支援從叢集版本1.26開始的升級。若您升級範圍為1.26到1.30版本,請提交工單開通白名單。
邊緣節點池和控制面最多隻能相差兩個次要版本,例如控制面為1.22版本,邊緣節點池最低是1.20版本,否則會導致叢集異常。
升級流程、方式及所需時間
升級流程
升級前準備
登入Container Service管理主控台,進入叢集列表頁面,在叢集列表的版本列查看當前ACK Edge叢集的版本並確認升級版本。
仔細閱讀ACK Edge叢集發布的版本及各版本的功能特性,請參見版本發布說明。
叢集升級中
控制面和雲端節點池升級前,均需通過前置檢查,等待所有檢查項均已通過或修複完成後,可進入後續的升級操作。
升級所需時間
ACK Edge叢集控制面升級時間約為5分鐘。
雲端節點池升級時內部節點分批升級,每批升級時間約為5分鐘。
邊緣節點池需要由您手動執行命令完成升級操作,操作時間和節點池下的節點數量有關。
叢集升級後
核驗叢集版本資訊,檢查節點池運行是否正常,並檢查叢集業務運行是否正常。
操作步驟
步驟一:升級控制面
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在叢集升級頁面選擇可升級的目標版本,然後單擊前置檢查,提前掃描叢集升級可能存在的潛在風險。
檢查完成後,您可以在前置檢查結果地區查看檢查結果。
結果正常時,升級檢查成功,請繼續進行叢集升級操作。
結果提示異常時,不影響當前叢集的運行及叢集狀態。您可以參見推薦的解決方案進行修複。關於典型修複方案,請參見叢集檢查項及修複方案。
說明Kubernetes 1.20及以後版本的叢集升級前檢查時,會檢查目前的版本是否使用了廢棄API,檢查結果不會影響升級流程,僅作為提示資訊。詳細內容,請參見廢棄API說明。
前置檢查通過後,單擊立即升級,按照頁面提示進行控制面的升級。
升級過程中,您可以在頁面右上方查看升級歷史。
升級完成後,請在叢集列表查看叢集版本,確認升級是否成功。新擴容節點的版本也將遵循控制面版本。
步驟二:升級雲端節點池
控制面升級完成後,請儘快在業務低峰期完成雲端節點池的升級。雲端節點池升級包括節點kubelet和容器運行時的升級。功能介紹、相關注意事項及操作步驟,請參見雲端節點池升級。
步驟三:升級邊緣節點池
升級邊緣節點池之前必須保證控制面已升級完成。
邊緣叢集節點池下的所有邊緣節點都升級成功,邊緣節點池才算升級完成。
含Docker運行時遷移的升級
升級ACK Edge叢集至1.24版本,若其中包含使用Docker運行時的節點時,您需要將容器運行時從Docker遷移到containerd,因為1.24版本的Kubernetes已經不支援Docker運行時。您可以通過以下任一方式完成升級操作。
(推薦)建立containerd節點池輪轉遷移:建立一個節點池,運行時選擇containerd,擴容節點。通過設定老節點池禁止調度或者更新應用負載指定節點池調度的方式(例如Label),逐步將應用全部遷移至新的節點池,再將舊節點池進行下線處理。關於如何建立節點池,請參見邊緣節點池管理;關於如何將節點設定為不可調度,請參見節點排水和調度狀態。
原地升級:直接將節點上的運行時從containerd切換到Docker,在升級前也要進行節點排水,另外升級會導致節點上所有容器重啟。
節點排水。
在待升級邊緣節點池下的所有邊緣節點上,依次執行如下命令,完成所有邊緣節點的升級。
export REGION="" INTERCONNECT_MODE="" TARGET_CLUSTER_VERSION=""; export ARCH=$(uname -m | awk '{print ($1 == "x86_64") ? "amd64" : (($1 == "aarch64") ? "arm64" : "amd64")}') INTERNAL=$( [ "$INTERCONNECT_MODE" = "private" ] && echo "-internal" || echo "" ); wget http://aliacs-k8s-${REGION}.oss-${REGION}${INTERNAL}.aliyuncs.com/public/pkg/run/attach/${TARGET_CLUSTER_VERSION}/${ARCH}/edgeadm -O edgeadm; chmod u+x edgeadm;./edgeadm upgrade --interconnect-mode=${INTERCONNECT_MODE} --region=${REGION}參數說明如下:
參數
說明
樣本值
TARGET_CLUSTER_VERSION
指定要升級到的目的地組群版本。
說明升級的目的地組群版本就是控制面升級完成後的版本。
1.24.6-aliyunedge.1
ACK Edge叢集發布的版本和具體版本號碼,請參見版本發布說明。
REGION
指定叢集所在地區的Region ID。
cn-hangzhou
ACK Edge叢集支援的地區及其Region ID,請參見開服地區。
INTERCONNECT_MODE
指定節點接入的網路類型。
basic:公網接入。
private:專線接入。
basic
返回如下執行結果,則說明當前邊緣節點升級成功。

不含Docker運行時遷移的升級
在待升級邊緣節點池下的所有邊緣節點上,依次執行如下命令,完成所有邊緣節點的升級。
export REGION="" INTERCONNECT_MODE="" TARGET_CLUSTER_VERSION=""; export ARCH=$(uname -m | awk '{print ($1 == "x86_64") ? "amd64" : (($1 == "aarch64") ? "arm64" : "amd64")}') INTERNAL=$( [ "$INTERCONNECT_MODE" = "private" ] && echo "-internal" || echo "" ); wget http://aliacs-k8s-${REGION}.oss-${REGION}${INTERNAL}.aliyuncs.com/public/pkg/run/attach/${TARGET_CLUSTER_VERSION}/${ARCH}/edgeadm -O edgeadm; chmod u+x edgeadm;./edgeadm upgrade --interconnect-mode=${INTERCONNECT_MODE} --region=${REGION}參數說明如下:
參數 | 說明 | 樣本值 |
TARGET_CLUSTER_VERSION | 指定要升級到的目的地組群版本。 說明 升級的目的地組群版本就是控制面升級完成後的版本。 | 1.24.6-aliyunedge.1 ACK Edge叢集發布的版本和具體版本號碼,請參見版本發布說明。 |
REGION | 指定叢集所在地區的Region ID。 | cn-hangzhou ACK Edge叢集支援的地區及其Region ID,請參見開服地區。 |
INTERCONNECT_MODE | 指定節點接入的網路類型。
| basic |
返回如下執行結果,則說明當前邊緣節點升級成功。
升級常見問題
若一直不升級,後台是否會強制完成自動升級?
不會,ACK Edge叢集目前只支援手動升級,若您一直不升級,將一直使用舊版本。建議您及時升級以獲得更完整的功能特性和支援人員。
邊緣節點升級失敗如何處理?
升級邊緣節點池時,若未返回升級成功結果This node has been upgraded successfully,請參見如何處理邊緣節點升級失敗的問題?排查原因。
相關文檔
在執行升級前置檢查時,若檢查結果異常,可參考叢集檢查項及修複方案排查異常原因。