全部產品
Search
文件中心

Container Service for Kubernetes:升級ACK Edge叢集

更新時間:Nov 06, 2024

為避免到期版本叢集潛在的安全性和穩定性風險,同時享有新叢集版本的新功能,建議您隨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版本,否則會導致叢集異常。

您可以登入Container Service管理主控台,進入叢集頁面,在叢集列表的版本列查看當前ACK Edge叢集的版本。

ACK Edge叢集發布的版本及各版本的功能特性,請參見版本發布說明

相關功能及自訂配置說明

如果您的ACK Edge叢集使用了如下相關功能,請仔細閱讀以下說明及解決方案。

配置項

注意事項

推薦解決方案

節點自動調整

  • 如果您的ACK Edge叢集使用了節點自動調整功能,為保證自動調整功能不受影響,叢集在升級成功後會自動更新Cluster Autoscaler組件至最新版本。

  • 叢集升級期間,受Auto Scaling極速彈出模式管理的節點可能會因節點關機而無法完成升級。

  • 確認Cluster Autoscaler組件版本是否正常。更多資訊,請參見啟用節點自動調整

  • 如果升級結束後排查有節點因極速彈出模式未被升級,建議手動移除該節點。

節點資源預留

升級至Kubernetes v1.18後,ACK Edge叢集會預設配置節點資源預留。如果叢集未配置資源預留且節點水位較高,升級後存在Pod驅逐後無法被快速調度的風險。

為節點預留部分資源,推薦CPU使用率不超過50%,記憶體使用量率不超過70%。更多資訊,請參見節點資源預留策略

Loadbalancer配置

叢集外部存取叢集時,需要通過SLB來訪問。但當SLB設定externalTrafficPolicy: Local後,只有部署了相應後端Pod的節點才能訪問到對應的SLB地址。如果叢集節點或者Pod所在的節點上沒有相應的後端服務Pod,可能導致網路不通。

檢查是否完成對應配置,避免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版本不同,發生類似invalid object doesn't have additional properties的報錯。

安裝或升級kubectl。具體操作,請參見安裝kubectl

如果您對叢集有自訂配置,請仔細閱讀以下說明:

配置項

說明

網路

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

作業系統鏡像

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

其他

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

升級流程、方式及所需時間

升級流程

升級方式

  • 控制面和雲端節點池升級ACK Edge叢集支援通過控制台觸發控制面和雲端節點池的升級,後續升級動作由後台自動完成。支援的升級模式如下:

    • (推薦)控制面和所有雲端節點池:系統將自動完成控制面和所有雲端節點池的同時升級,後台實際的升級順序為先升級控制面,再分批升級雲端節點池。

    • 僅升級控制面:系統將自動完成控制面的升級。控制面升級完成後,您還需要單獨完成雲端節點池的升級。雲端節點池升級操作,請參見升級節點池

  • 邊緣節點池升級:需要您手動執行命令,將待升級邊緣節點池下的所有節點都依次進行升級。

升級所需時間

  • ACK Edge叢集控制面升級時間約為5分鐘。

  • 雲端節點池升級時內部節點分批升級,每批升級時間約為5分鐘。

  • 邊緣節點池需要由您手動執行命令完成升級操作,操作時間和節點池下的節點數量有關。

升級操作

步驟一:升級控制面和所有雲端節點池

(推薦)同時升級控制面和所有雲端節點池

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

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

  3. 叢集升級頁面的操作對象地區,選擇可升級的叢集版本,選擇升級模式控制面和所有雲端節點池,並在批量升級策略地區,設定每批次的最大並行數,然後單擊前置檢查

    檢查完成後,單擊查看詳情,查看檢查報告。

    • 檢查結果正常時,您可以繼續進行叢集升級操作。

    • 檢查結果異常時,請單擊待處理頁簽按照頁面提示進行修複。詳細資料,請參見叢集檢查項及修複方案

  4. 前置檢查通過後,單擊開始升級

    升級過程中,請勿添加或刪除節點(如需操作,請先取消升級)。您可以在叢集升級頁面下方的事件輪轉地區查看升級進程,還可按需進行以下操作。

    • 暫停與繼續升級:升級過程中,如需在某個階段暫停升級,可單擊暫停。如需繼續叢集升級進程,單擊繼續

      叢集暫停狀態為叢集升級的中間狀態,請儘快完成升級,並在此期間請勿對叢集進行任何操作。處於暫停狀態的叢集將7日後關閉升級過程,同時清理升級相關的事件和日誌資訊。

    • 取消升級:如需取消叢集升級,可在暫停升級後單擊取消,然後在彈出的對話方塊單擊確定。取消升級後,當前批次已經開始升級的節點將完成升級且無法復原,未開始升級的節點不會升級。

      說明
      • 如果叢集升級過程中發生錯誤,系統將暫停叢集升級進程。具體失敗原因會展示在頁面下方詳情中,您可根據提示進行修複。

      • 叢集升級過程中,除非發生錯誤,否則請勿修改kube-upgrade命名空間下的相關資源。

    升級完成後,您可以在叢集列表查看叢集版本,確認管控組件升級是否成功,並在叢集資訊頁面的左側導覽列單擊節點管理 > 節點,查看kubelet版本,確認節點升級是否成功。

單獨升級控制面

重要

選擇單獨升級控制面時,您必須在控制面升級完成後,再單獨升級所有雲端節點池。具體操作,請參見升級節點池

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

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

  3. 叢集升級頁面的操作對象地區,選擇可升級的叢集版本,選擇升級模式僅控制面,然後單擊前置檢查

    檢查完成後,單擊查看詳情,查看檢查報告。

    • 檢查結果正常時,您可以繼續進行叢集升級操作。

    • 檢查結果異常時,請單擊待處理頁簽按照頁面提示進行修複。詳細資料,請參見叢集檢查項及修複方案

  4. 前置檢查通過後,單擊開始升級

    升級過程中,您可以在叢集升級頁面下方查看升級進程。升級完成後,您可以在叢集列表查看叢集版本,確認管控組件升級是否成功。

步驟二:升級邊緣節點池

重要
  • 升級邊緣節點池之前必須保證控制面已升級完成。

  • 邊緣叢集節點池下的所有邊緣節點都升級成功,邊緣節點池才算升級完成。

在待升級邊緣節點池下的所有邊緣節點上,依次執行如下命令,完成所有邊緣節點的升級。

 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:公網接入。

  • private:專線接入。

basic

返回如下執行結果,則說明當前邊緣節點升級成功。

image

升級常見問題

若一直不升級,後台是否會強制完成自動升級?

不會,ACK Edge叢集目前只支援手動升級,若您一直不進行升級操作,將一直使用舊的叢集版本。建議您及時將叢集升級到最新版本,獲得更完整的功能特性和支援人員。

邊緣節點升級失敗如何處理?

請參見如何處理邊緣節點升級失敗的問題?排查原因。

相關文檔

在執行升級前置檢查時,若檢查結果異常,可參考叢集檢查項及修複方案排查異常原因。