為避免過期版本集群潛在的安全性和穩定性風險,同時享有新集群版本的新功能,建議您隨ACK Edge集群的版本發布節奏及時升級集群。ACK Edge集群采用原地升級方式進行升級,本文為您介紹ACK Edge集群升級的注意事項、升級流程和操作。
為什么需要升級集群版本
降低安全和穩定性風險:隨著Kubernetes版本迭代,會不斷優化及修復發現的安全及穩定性漏洞,長久使用過期版本集群會給業務帶來安全和穩定性風險。
享受更好的維護支持:對于過期版本,ACK Edge集群不再提供安全補丁和問題修復,也無法保證過期版本的技術支持質量。使用新版本能夠讓您享受更好的技術支持和答疑服務。
使用新版本的新功能:隨著社區Kubernetes版本的演進,新版本包含新的功能和改進,ACK Edge集群也將進行適配和發布,為您帶來更好的開發和運維體驗。
注意事項
版本說明
ACK Edge集群支持的升級范圍為1.18到1.22版本,且只能按照支持的版本依次升級,不支持跨版本升級。
例如,從1.18版本升級到1.22版本,需要進行兩次升級操作,先從1.18升級到1.20版本,再從1.20升級到1.22版本。
邊緣節點池和控制面最多只能相差兩個次要版本,例如控制面為1.22版本,邊緣節點池最低是1.20版本,否則會導致集群異常。
您可以登錄容器服務管理控制臺,進入集群頁面,在集群列表的版本列查看當前ACK Edge集群的版本。
ACK Edge集群發布的版本及各版本的功能特性,請參見版本發布說明。
相關功能及自定義配置說明
如果您的ACK Edge集群使用了如下相關功能,請仔細閱讀以下說明及解決方案。
配置項 | 注意事項 | 推薦解決方案 |
節點自動伸縮 |
|
|
節點資源預留 | 升級至Kubernetes v1.18后,ACK Edge集群會默認配置節點資源預留。如果集群未配置資源預留且節點水位較高,升級后存在Pod驅逐后無法被快速調度的風險。 | 為節點預留部分資源,推薦CPU使用率不超過50%,內存使用率不超過70%。更多信息,請參見節點資源預留策略。 |
Loadbalancer配置 | 集群外部訪問集群時,需要通過SLB來訪問。但當SLB設置 | 檢查是否完成對應配置,避免LoadBalancer暴露的SLB地址訪問不通的風險。如有相關問題,請參見Kubernetes集群中訪問LoadBalancer暴露的SLB地址不通。 |
API Server | 集群升級過程中,ACK Edge集群竭力保障控制面的平滑升級,集群上的應用不會中斷,但升級過程中可能會出現短暫的API Server中斷。如果您的應用強依賴于API Server,例如需要對資源進行List-Watch,API Server重啟會導致Watch中斷,需要您自行保證在中斷時自動重試。 | 如果您的應用不訪問API Server,將不會受到升級影響;如果需要訪問API Server,則需要具備失敗重試的能力。 |
啟動探針(Startup Probe) | 如果集群中的Pod配置了啟動探針,Pod會在kubelet重啟后出現短暫的NotReady現象。 | 建議Pod采用多副本模式,將Pod分散到不同的節點上,以確保在某個節點重啟期間仍有足夠的可用Pod。 |
kubectl | ACK Edge集群升級后,請同步升級您本地的kubectl版本。 如果未及時升級,在使用本地kubectl的過程中可能會因為與集群API Server版本不同,發生類似 | 安裝或升級kubectl。具體操作,請參見安裝kubectl。 |
如果您對集群有自定義配置,請仔細閱讀以下說明:
配置項 | 說明 |
網絡 | 集群升級需要使用yum下載升級所需的軟件包。如果您的集群曾自行修改節點的網絡配置或者使用了自定義的操作系統鏡像,需確保節點的yum能正常使用。您可以執行 |
操作系統鏡像 | 自定義操作系統鏡像非容器服務官方嚴格驗證。ACK無法完全保證升級成功。 |
其他 | 如果您對集群有過配置更改,例如打開了SWAP分區、曾通過黑屏操作修改kubelet配置等,集群升級過程有可能失敗,或自定義配置有可能丟失。 |
升級流程、方式及所需時間
升級流程
升級方式
控制面和云端節點池升級:ACK Edge集群支持通過控制臺觸發控制面和云端節點池的升級,后續升級動作由后臺自動完成。支持的升級模式如下:
(推薦)控制面和所有云端節點池:系統將自動完成控制面和所有云端節點池的同時升級,后臺實際的升級順序為先升級控制面,再分批升級云端節點池。
僅升級控制面:系統將自動完成控制面的升級。控制面升級完成后,您還需要單獨完成云端節點池的升級。云端節點池升級操作,請參見升級節點池。
邊緣節點池升級:需要您手動執行命令,將待升級邊緣節點池下的所有節點都依次進行升級。
升級所需時間
ACK Edge集群控制面升級時間約為5分鐘。
云端節點池升級時內部節點分批升級,每批升級時間約為5分鐘。
邊緣節點池需要由您手動執行命令完成升級操作,操作時間和節點池下的節點數量有關。
升級操作
步驟一:升級控制面和所有云端節點池
(推薦)同時升級控制面和所有云端節點池
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,選擇目標集群,并在目標集群右側操作列,選擇 。
在集群升級頁面的操作對象區域,選擇可升級的集群版本,選擇升級模式為控制面和所有云端節點池,并在批量升級策略區域,設置每批次的最大并行數,然后單擊前置檢查。
檢查完成后,單擊查看詳情,查看檢查報告。
檢查結果為正常時,您可以繼續進行集群升級操作。
檢查結果為異常時,請單擊待處理頁簽按照頁面提示進行修復。詳細信息,請參見集群檢查項及修復方案。
前置檢查通過后,單擊開始升級。
升級過程中,請勿添加或刪除節點(如需操作,請先取消升級)。您可以在集群升級頁面下方的事件輪轉區域查看升級進程,還可按需進行以下操作。
暫停與繼續升級:升級過程中,如需在某個階段暫停升級,可單擊暫停。如需繼續集群升級進程,單擊繼續。
集群暫停狀態為集群升級的中間狀態,請盡快完成升級,并在此期間請勿對集群進行任何操作。處于暫停狀態的集群將7日后關閉升級過程,同時清理升級相關的事件和日志信息。
取消升級:如需取消集群升級,可在暫停升級后單擊取消,然后在彈出的對話框單擊確定。取消升級后,當前批次已經開始升級的節點將完成升級且無法回滾,未開始升級的節點不會升級。
說明如果集群升級過程中發生錯誤,系統將暫停集群升級進程。具體失敗原因會展示在頁面下方詳情中,您可根據提示進行修復。
集群升級過程中,除非發生錯誤,否則請勿修改kube-upgrade命名空間下的相關資源。
升級完成后,您可以在集群列表查看集群版本,確認管控組件升級是否成功,并在集群信息頁面的左側導航欄單擊節點管理 > 節點,查看kubelet版本,確認節點升級是否成功。
單獨升級控制面
選擇單獨升級控制面時,您必須在控制面升級完成后,再單獨升級所有云端節點池。具體操作,請參見升級節點池。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,選擇目標集群,并在目標集群右側操作列,選擇 。
在集群升級頁面的操作對象區域,選擇可升級的集群版本,選擇升級模式為僅控制面,然后單擊前置檢查。
檢查完成后,單擊查看詳情,查看檢查報告。
檢查結果為正常時,您可以繼續進行集群升級操作。
檢查結果為異常時,請單擊待處理頁簽按照頁面提示進行修復。詳細信息,請參見集群檢查項及修復方案。
前置檢查通過后,單擊開始升級。
升級過程中,您可以在集群升級頁面下方查看升級進程。升級完成后,您可以在集群列表查看集群版本,確認管控組件升級是否成功。
步驟二:升級邊緣節點池
升級邊緣節點池之前必須保證控制面已升級完成。
邊緣集群節點池下的所有邊緣節點都升級成功,邊緣節點池才算升級完成。
在待升級邊緣節點池下的所有邊緣節點上,依次執行如下命令,完成所有邊緣節點的升級。
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.22.15-aliyunedge.1 ACK Edge集群發布的版本和具體版本號,請參見版本發布說明。 |
REGION | 指定集群所在地域的Region ID。 | cn-hangzhou ACK Edge集群支持的地域及其Region ID,請參見開服地域。 |
INTERCONNECT_MODE | 指定節點接入的網絡類型。
| basic |
返回如下執行結果,則說明當前邊緣節點升級成功。
升級常見問題
若一直不升級,后臺是否會強制完成自動升級?
不會,ACK Edge集群目前只支持手動升級,若您一直不進行升級操作,將一直使用舊的集群版本。建議您及時將集群升級到最新版本,獲得更完整的功能特性和技術支持。
邊緣節點升級失敗如何處理?
可參考升級ACK Edge集群時,邊緣節點升級失敗如何處理?排查原因。
相關文檔
在執行升級前置檢查時,若檢查結果異常,可參考集群檢查項及修復方案排查異常原因。