全部產品
Search
文件中心

Container Service for Kubernetes:升級ACK靈駿叢集

更新時間:Jun 19, 2024

為避免到期版本叢集存在的安全和穩定性風險,同時保證您業務的連貫性,Container ServiceACK採用原地升級的方式升級ACK靈駿叢集版本。您可以通過控制台升級叢集的Kubernetes版本,也可以獨立升級控制面和節點池,靈活控制升級節奏。本文介紹叢集升級前後的注意事項、升級流程、操作步驟等。

為什麼需要升級

ACK靈駿叢集支援Kubernetes 1.20升級至1.22。

主動升級叢集有以下好處:

  • 降低安全和穩定性風險:隨著Kubernetes版本迭代,會不斷最佳化及修複發現的安全及穩定性漏洞,長久使用到期版本叢集會給業務帶來安全和穩定性風險。

  • 使用新版本的新功能:隨著社區Kubernetes版本的演化,新版本包含新的功能和改進,ACK也將適配新版本,為您帶來更好的開發和營運體驗。

建議您參照下文提前主動升級叢集。

重要

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

更多關於Kubernetes版本支援資訊,請參見ACK靈駿Kubernetes版本概覽及機制

注意事項(重要)

版本說明

您可以登入Container Service管理主控台,在叢集頁面的版本列查看叢集的Kubernetes版本。確定待升級版本後,參見下方連結瞭解待升級版本的版本解讀、廢棄資源API、升級注意事項等,避免因高版本的功能變更導致業務功能不相容,繼而影響叢集正常運行。

說明

如果您的HELM Chart YAML檔案中使用了廢棄資源,請及時修改。更多資訊,請參見上方版本說明和廢棄API說明

相關功能及自訂配置說明

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

配置項

注意事項

推薦解決方案

Flexvolume儲存

叢集升級過程中,老版本的Flexvolume(v1.11.2.5及以前)掛載的OSS儲存卷會重新掛載。

若您的叢集使用OSS儲存卷,請在叢集升級後重建相應的Pod。

同時,由於Flexvolume儲存外掛程式已經棄用,建議您將FlexVolume遷移至CSI外掛程式。具體操作,請參見遷移Flexvolume至CSI

節點自動調整

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

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

節點資源預留

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

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

Loadbalancer配置

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

檢查是否完成對應配置,避免LoadBalancer暴露的SLB地址訪問不通的風險。如有相關問題,請參見Kubernetes叢集中訪問LoadBalancer暴露出去的SLB地址不通

API Server

叢集升級過程中,ACK竭力保障控制面的平滑升級,叢集上的應用不會中斷,但升級過程中可能會出現短暫的API Server中斷。如果您的應用強依賴於API Server,例如需要對資源List-Watch,API Server重啟會導致Watch 中斷,需要您自行保證在中斷時自動重試。

如果您的應用不訪問API Server,將不會受到升級影響;如果需要訪API Server,則需要有失敗重試的能力。

kubectl

叢集升級後,請同步升級您本地的kubectl版本。

如果未及時升級,在使用本地kubectl的過程中可能會因為與叢集API Server版本不同,發生類似invalid object doesn't have additional properties的報錯。

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

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

配置項

說明

網路

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

作業系統鏡像

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

其他

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

操作步驟

同時升級控制面與節點池

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

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

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

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

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

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

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

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

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

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

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

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

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

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

僅升級控制面

操作步驟

節點池升級前,您應先完成控制面升級。

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

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

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

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

    • 當檢查報告中檢查結果正常時,表示升級檢查成功,您可以進行叢集升級操作。

    • 當檢查報告中檢查結果異常時,不影響當前叢集的運行及叢集狀態。請單擊待處理頁簽按照頁面提示進行修複。典型修複方案,請參見叢集檢查項及修複方案

      說明

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

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

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

後續操作:升級節點池

控制面升級完成後,新擴容節點的版本遵循控制面的版本。建議您在業務低峰期儘快完成存量節點的升級,並在升級完成後查看kubelet版本,確認升級是否成功。

叢集升級常見問題

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

問題原因

雲助手不可用,導致升級命令下發失敗。

解決方案

請啟動或停止雲助手後,重新執行叢集升級操作。具體操作,請參見啟動、停止或者卸載雲助手Agent

如何處理節點PLEG not healthy?

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

參考資訊:控制面及節點池升級流程

控制面升級流程

ACK靈駿叢集將按照以下流程升級您叢集的控制面。具體策略如下。

  1. 升級控制面和託管組件,包括kube-apiserver、kube-controller-manager和kube-scheduler等。

  2. 升級Kubernetes組件,例如kube-proxy等。

節點池升級流程

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

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

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

相關文檔

當您在升級ACK靈駿叢集過程中遇到問題,請參見叢集檢查項及修複方案進行定位和解決。