自動升級 Azure Kubernetes Service (AKS) 叢集

AKS 叢集生命週期的一部分包括定期升級到最新的 Kubernetes 版本。 使用最新安全版本或升級以取得最新功能非常重要。 在學習自動升級之前,務必了解 AKS 叢集升級的基本原理。

Tip

如果您使用 AKS Automatic,叢集升級會預先設定為使用 stable 通道,並自動升級至次要版本 N-1 的最新修補程式版本(其中 N 為目前最新支援的版本)。 不需要設定。 對於具備特定維護需求的 AKS 自動叢集,你可以設定計畫性維護視窗。 欲了解更多,請參閱 What is Azure Kubernetes Service (AKS) Automatic?關於 AKS 標準群組,請繼續閱讀以選擇最適合您需求的頻道。

附註

如果節點映像版本還不是最新版本,不論是手動或自動執行,所有升級作業都會升級節點映像版本。 最新版本取決於完整的 AKS 版本,您可以瀏覽 AKS 發行版本追蹤器以進行判斷。

自動升級會先升級控制平面,然後逐一升級代理程式池。

為什麼要用叢集自動升級

叢集自動升級提供了一個 一勞永逸 的機制,帶來實際的時間與營運成本效益。 您無需停止工作負載、重新部署工作負載或建立新的 AKS 叢集。 啟用自動升級,你可以確保叢集是最新的,不會錯過 AKS 和上游 Kubernetes 的最新功能或修補程式。

對於 AKS 自動 叢集,這項優勢是內建的——叢集自動升級預設並透過穩定通道啟用,省去手動設定或決策的需求。

AKS 遵循嚴格的支援版本控制機制。 只要正確選擇自動升級頻道,你可以避免叢集落入不支援的版本。 如需 AKS 支援時段的詳細資訊,請參閱別名為次要版本。

客戶與 AKS 發起的叢集自動升級比較

你可以依照以下指引指定叢集自動升級的細節。 升級將根據您指定的節奏進行,建議保持在受支援的 Kubernetes 版本上。

  • AKS 會自動將目前為 N-3 版本、且即將降至 N-4 的叢集改為升級至 N-2,其中 N 是 AKS 目前支援的最新 GA 次要版本。 此動作確保叢集持續存在於 AKS 支援視窗中。 欲了解更多資訊,請參閱 AKS 支援視窗。
  • 停止的節點池會在自動升級操作中升級。 升級適用於節點集區啟動時的節點。 若要盡量減少中斷,請設定維護時段。

叢集自動升級的限制

控制平面升級限制

如果你用的是叢集自動升級,就不能先升級控制平面,再升級各個節點池。 叢集自動升級總是會同時升級控制平面和節點池。 您不能只升級控制平面。 執行該 az aks upgrade --control-plane-only 指令會產生以下錯誤:

NotAllAgentPoolOrchestratorVersionSpecifiedAndUnchanged: Using managed cluster api, all Agent pools' OrchestratorVersion must be all specified or all unspecified. If all specified, they must be stay unchanged or the same with control plane.

節點映像自動升級與無人參與的升級

如果使用 node-image 叢集自動升級通道(該通道現在已是舊有且不應再使用)或 NodeImage 節點映像自動升級通道,Linux 無 人值守升級 預設會被禁用。

叢集自動升級通道

自動完成的升級功能上與手動升級相同。 所選自動升級通道決定升級的時機。 在更改自動升級時,請預留24小時讓變更生效。 自動升級叢集會遵循與手動升級叢集相同的流程。 如需詳細資訊,請參閱升級 AKS 叢集。

針對 AKS 自動叢集

AKS 自動叢集預設使用 stable 頻道。 此頻道提供建議的平衡,既能掌握最新功能與安全更新,又能維持穩定性。 叢集會自動升級至次要版本 N-1 的最新修補程式版本(其中 N 為最新支援的次要版本)。

不需要設定 ——升級會在維護期間自動完成。 如有需要,您可以設定預定維護時段來控制升級發生的時間,但通道選項只能固定為穩定版本。

為什麼 AKS Automatic 如此穩定?

  • 使叢集維持在 N-2 支援範圍內(安全且符合規範)
  • 平衡創新與穩定性
  • 由 AKS 全面管理,並採取安全部署措施
  • 與 AKS 架構完善最佳做法相符
  • 針對生產工作負載進行優化

適用於 AKS 標準叢集

如果你使用 AKS 標準,請選擇最符合你營運需求的通道。

下列為可用的升級通道:

通路 動作 範例
none 停用自動升級,並維持叢集目前的 Kubernetes 版本。 如果保持不變,則為預設設定。
patch 當補丁版本可用時,自動將叢集升級到最新支援的補丁版本,同時保持次要版本不變。 舉例來說,如果叢集執行 1.17.7 版,且有 1.17.9、1.18.4、1.18.6 和 1.19.1 版,該叢集會升級至 1.17.9。
stable 自動將叢集升級至次要版本 N-1 上最新受支援的修補程式版本,其中 N 是最新受支援的次要版本。 舉例來說,如果叢集執行 1.17.7 版,且有 1.17.9、1.18.4、1.18.6 和 1.19.1 版,該叢集會升級至 1.18.6。
rapid 自動將叢集升級至最新受支援次要版本中的最新受支援修補程式版本。 如果叢集的 Kubernetes 版本為 N-2 次要版本,N 為最新的支援次要版本,則叢集會先在 N-1 次要版本上,升級至最新的支援修補程式版本。 舉例來說,如果叢集執行 1.17.7 版,且有 1.17.9、1.18.4、1.18.6 和 1.19.1 版,該叢集會先升級至 1.18.6,再升級至 1.19.1。
node-image(舊版) 會自動將節點映像檔升級到可用最新版本。 Microsoft 經常(每週)提供映像節點的修補程式和新映像檔,但你執行中的節點除非進行節點映像檔升級,否則不會收到新的映像檔。 若開啟節點映像通道,就會在有新版本時,自動更新您的節點映像。 如果您使用此通道,依預設會停用 Linux [自動升級]。 只要 Kubernetes 次版本號仍然受支持,Node 鏡像升級就可以在已棄用的補丁版本上工作。 該通道已不再建議使用,並計劃在未來停用。 關於能自動升級節點映像的選項,請參考NodeImage節點映像自動升級中的通道。

附註

使用叢集自動升級時,請留意以下資訊:

  • 叢集自動升級只會更新到 Kubernetes 的 GA 版本,不會更新到預覽版。

  • 使用 AKS,您可以建立叢集而無需指定確切的修補程式版本。 建立叢集時,如果沒有指定修補程式,則叢集將運行次版本的最新 GA 修補程式。 若要深入了解,請參閱 AKS 支援時段。

  • 自動升級要求叢集的 Kubernetes 版本必須在 AKS 支援視窗內,即使使用 node-image 指定通道。

  • 如果你使用預覽 API 11-02-preview 或更新版本,並且選擇 node-image 叢集自動升級通道,節點映像升級設定會自動切換到該 NodeImage 通道。

  • 每個叢集只能與單一自動升級通道相關聯。 原因是你指定的通道決定了叢集上運行的 Kubernetes 版本。

叢集模式比較

下表總結了叢集模式下的自動升級配置:

層面 AKS 自動化系统 AKS 標準
預設頻道 穩定(預先配置) 需手動選擇
升級節奏 每週(固定至N-1) 根據你選擇的頻道
需要組態 無 - 自動升級 是的——選擇頻道並排程
建議用於 大多數生產環境工作負載 自訂需求或特定限制
維護時段控制 Optional 強烈建議
可用的頻道選項 僅限穩定版(固定) 修補程式、穩定、快速、無

使用自動升級功能來搭配新的 AKS 叢集

附註

如果你要建立 AKS 自動叢集,請跳過這些步驟。 穩定頻道已經預先設定好自動升級。 這些步驟僅適用於 AKS 標準叢集。

在建立新叢集時,請用 az aks create 指令和 auto-upgrade-channel 參數設定自動升級通道。

az aks create \
  --resource-group <resource-group-name> \
  --name <cluster-name> \
  --auto-upgrade-channel stable \
  --generate-ssh-keys

使用現有 AKS 叢集的自動升級功能

附註

如果你用的是 AKS 自動叢集,你無法更改叢集自動升級通道——它已經預設為使用穩定。 這些步驟僅適用於 AKS 標準叢集。 如果需要,你可以為 AKS 自動叢集設定計畫維護視窗。

用 az aks update 帶有參數 auto-upgrade-channel 的指令在現有叢集上設定自動升級通道。

az aks update \
  --resource-group <resource-group-name> \
  --name <cluster-name> \
  --auto-upgrade-channel stable

結果:

{
  "id": "/subscriptions/aaaa6a6a-bb7b-cc8c-dd9d-eeeeee0e0e0e/resourceGroups/myResourceGroupabc123/providers/Microsoft.ContainerService/managedClusters/myAKSCluster",
  "properties": {
    "autoUpgradeChannel": "stable",
    "provisioningState": "Succeeded"
  }
}

使用叢集自動升級搭配計劃性維護

如果使用 Planned Maintenance 並使用叢集自動升級,升級會在指定的維護時段開始。

附註

為確保正常運作,請使用四小時以上的維護時段。

如需如何使用計劃性維護設定維護期間的詳細資訊,請參閱使用計劃性維護來排程 Azure Kubernetes Service (AKS) 叢集的維護期間。

叢集自動升級的最佳實務

請參考以下最佳實務,幫助你在自動升級時最大化成功率:

對於 AKS Automatic,叢集自動升級的設定方式是否不同?

Yes. AKS Automatic 叢集預設會使用穩定通道——你不需要特別設定。 此配置提供:

  • 自動升級至 N-1 次要版本的最新修補程式
  • 每週升級頻率,與 AKS 最佳實務一致
  • 由 AKS 全面管理,並採取安全部署措施
  • 維護時段控制 (選用)
  • 針對大多數工作負載優化的生產準備預設

AKS 標準叢集要求你根據自己的需求選擇頻道。 若要從 AKS Standard 遷移到 AKS Automates,並享受這些預設值,請參閱「什麼是 Azure Kubernetes Service (AKS) Automatic?」

如需升級最佳做法和其他考量的詳細討論,請參閱 AKS 修補檔和升級指導。

想了解更多關於 AKS Automatic 預先設定的設定與生產準備預設,請參閱 What is Azure Kubernetes Service (AKS) Automatic?