Azure Kubernetes Service (AKS) 中的節點集區版本復原功能可以讓您從 Kubernetes 升級後的意外行為中復原。 若發生問題,您可以將節點池回滾至先前的 Kubernetes 版本與節點映像組合,確保業務持續性並減少停機時間。 本文說明何時以及如何使用回滾功能、其功能與限制,以及回滾後的最佳實務。
先決條件
- Azure CLI 版本 2.64.0 或更高。 使用命令
az --version查找您的版本。 如果你需要安裝或升級,請參考 安裝 Azure CLI。 -
aks-previewAzure CLI 擴充功能已安裝並更新至最新版本。 - API 版本
2025-08-02-preview或更新版本。
安裝 aks-preview Azure CLI 擴充功能
這很重要
AKS 預覽功能可透過自助服務,以加入方式使用。 預覽是「依現況」及「可用時」提供的,並不包括在服務等級協定和有限保固之內。 客戶支援部門會盡最大努力,部分支援 AKS 預覽。 因此,這些功能不適合實際執行用途。 如需詳細資訊,請參閱下列支援文章:
使用aks-preview和az extension add指令來安裝或更新az extension update擴充功能。
# Install the aks-preview extension
az extension add --name aks-preview
# Update the aks-preview extension
az extension update --name aks-preview
節點集區版本回復支援的功能。
節點池版本回滾功能支援以下功能:
| 特徵 / 功能 | Description |
|---|---|
| 還原版本。 | 能將 Kubernetes 和 node 映像檔版本還原到原本的狀態。 |
| 手動扳機,自動執行 | 回滾需要手動啟動,但一旦觸發,系統會自動處理整個回滾過程,無需進一步介入。 |
| 節點池相容性 | 適用於所有類型的節點池,包括虛擬機(VM)池及基於 虛擬機器擴展集(VMSS)的節點池。 |
| 作業系統支援 | 相容於所有作業系統庫存單位(SKU),包括 Ubuntu、Azure Linux 及 Windows 池。 |
| 簡化流程 | 不需要進行快照管理。 |
節點池回滾限制與考量
使用節點池回滾功能時,請注意以下限制:
- 僅限版本變更。 其他節點集區變更不會還原。
- 回滾期間不允許進行並發操作。
- 如果已配置,你必須在回滾前關閉叢集自動升級功能。
- 升級完成後僅可使用七天。
- 無法連續回復以回到多個舊版本。
- 回滾不支援還原作業系統 SKU 變更。 如果你更改了節點池的作業系統 SKU(例如從 Ubuntu 改成 Azure Linux),回滾會嘗試還原屬於不同作業系統 SKU 的先前節點映像版本,但該版本會被拒絕。 若要還原作業系統 SKU 變更,請改用 指令
az aks nodepool update --os-sku。
使用節點池回滾時請留意以下幾點:
| 安全性隱含意義 | 作業考量 |
|---|---|
| * 弱點暴露:復原動作會從較新版本中移除安全性修補與更新。 因此,我們建議僅在解決問題期間暫時使用回復,並在問題解決後儘速重新升級。 |
*
服務中斷:回滾過程可能導致暫時性工作負載中斷。 * 資源可用性:確保回滾操作有足夠的容量。 * 測試需求:在再次嘗試升級前,請先解決根本問題。 |
為何使用回復。
回滾為生產環境提供了關鍵的恢復機制:
- 業務持續性:當升級引發意外問題時,盡量減少停機時間
- 風險緩解:快速恢復已知良好的配置,無需複雜的復原程序
- 簡化復原:避免手動介入或從備份重建叢集
何時應使用節點池回滾功能
在下列情況下,請考慮使用回滾作為您的復原選項:
- 升級失敗發生:基礎設施問題、資源限制或相容性問題阻礙升級成功。
- 應用程式故障:工作負載在較新的 Kubernetes 版本中會發生嚴重故障或資料損壞。
- 效能下降:新版本會導致無法接受的延遲、吞吐量問題或資源消耗。
- 測試缺口浮現:生產過程中出現未在生產前測試中發現的問題。
節點池回滾工作流程
下圖說明節點池回滾工作流程:
回滾過程會將節點池中的所有節點恢復到先前的版本狀態。 工作流程的關鍵面向包括:
- 全有或全無方式:所有節點都必須成功還原至先前版本,回復才會成功完成。 若任何節點未能回滾,整個操作即告失敗,以清楚傳達叢集狀態,類似升級操作。
- 進度追蹤:利用 Azure 活動記錄 監控回滾狀態,以查看操作歷史並使用 操作狀態 API 獲得即時更新。
回復節點集區版本。
這很重要
回復節點集區版本時,請注意下列資訊:
- 長期使用舊版本會增加安全風險,並可能因版本偏斜限制而最終阻礙升級。 將回滾視為暫時的恢復機制,而非永久解決方案。
- 使用 REST API 時,你可以先呼叫 Get Upgrade Profile API,取得最近使用的版本。 請利用這些資訊在回滾請求中指定目標版本。
使用
az aks nodepool rollback命令回復節點集區版本。 以下範例會在資源群組myNodePool中,將名為myAKSCluster的 AKS 叢集中名為myResourceGroup的節點集區回復。az aks nodepool rollback --name myNodePool --resource-group myResourceGroup --cluster-name myAKSCluster
監控節點池回滾狀態
您可以使用以下方法監控節點池回滾操作的狀態並驗證回滾是否成功:
- 查查你叢集的 活動日誌 。
- 查看你的集群上特定的升級相關事件。
- 訂閱AKS 事件並使用 Azure 事件方格。
- 如果你訂閱自動升級頻道,可以使用 AKS 通訊管理員 來接收升級通知。
回復後最佳做法。
成功回復節點集區後,請使用下列最佳做法以確保穩定與安全:
- 調查根本原因:先找出升級失敗的原因,再嘗試下一次升級。 檢視申請日誌、資源指標及相容性要求。
- 非生產環境測試:在開發或暫存環境中驗證新版本,以重現並解決問題,然後再升級生產環境。
-
規劃你的重新升級:不要一直停留在回退版本上。 安排重新升級以維護安全補丁與支援:
- 針對關鍵安全問題:修補驗證後數日內重新升級。
- 針對應用程式相容性問題:程式碼調整後數週內重新升級。
- 建議最大期限:30天以避免累積安全漏洞。
常見問題集 (FAQ)
在節點池回滾期間,我可以執行其他操作嗎?
不,回滾操作必須先完成才能開始其他操作。 要執行不同操作,請先中止回滾。
節點集區回復是否會同時還原 Kubernetes 版本與節點映像?
是的,回復會還原至最近使用的 Kubernetes 版本及其對應的節點映像。 若兩個元件都更改,系統會恢復先前版本的 Kubernetes 版本,並使用該版本最後相容的節點映像檔。
我可以只還原節點映像檔,而不更改節點池版本嗎?
是的,如果你只在過去七天內更新過節點映像檔(且沒有升級節點池版本),回滾會恢復之前的虛擬硬碟(VHD)映像檔,同時維持相同的 Kubernetes 版本。
我可以回滾到已經不再支援的版本嗎?
不,你無法回滾到 AKS 不再支援的 Kubernetes 版本。 舉例來說,如果你的節點池是 1.27.9 版本(現在已停止支援),而你升級到 1.28.5,你無法回滾到 1.27.9,因為它已經不在支援版本清單中。 務必查看 AKS Kubernetes 版本支援政策 以確認版本可用性。
我需要在執行節點池回滾前先關閉自動升級嗎?
是的,如果您的叢集已啟用自動升級,您必須在執行回復前停用。 此外,若叢集包含在 Azure Kubernetes Fleet Manager 自動升級設定檔的更新群組中,您必須先將該叢集從更新群組中移除,才能執行回滾。 否則,自動升級程序可能會在回滾完成後,再次自動升級您的節點池。
變更 OS SKU 後,是否可以復原 (例如從 Ubuntu 變更為 Azure Linux)?
否。 節點集區復原僅限於版本變更,無法復原 OS SKU 變更。 在從一個作業系統 SKU 遷移到另一個 SKU 後(例如從 Ubuntu 到 Azure Linux),先前的節點映像版本屬於舊的作業系統 SKU,與目前的配置不相容。 回滾操作會以類似以下錯誤的方式拒絕前一個映像版本:
NodeImageVersion 'AKSUbuntu-2204gen2containerd-202602.13.5' is not accepted. NodeImageVersion can only be current version 'AKSAzureLinux-V3gen2-202602.13.5' or 'latest'
要還原作業系統 SKU,請使用 az aks nodepool update 帶有參數的 --os-sku 指令。 如需詳細資訊,請參閱復原您的 OS 版本。
相關內容
欲了解更多關於 AKS 節點池升級的資訊,請參閱以下文章: