Azure Kubernetes Service(AKS)叢集主要由兩個元件組成: 由 Azure 管理的控制平面 ,以及 工作負載運行的節點池。 本文著重於獨立升級控制平面,讓你能採用新的 Kubernetes 版本以提供 API 伺服器功能,同時獨立管理節點池升級。
開始之前
- 如果您使用 Azure CLI,本文會要求您使用 Azure CLI 2.34.1 以上版本。 使用指令
az --version來尋找版本。 如果您需要安裝或升級,請參閱 安裝 Azure CLI。 - 如果您使用 Azure PowerShell,本文會要求您執行 Azure PowerShell 5.9.0 以上版本。 用
Get-InstalledModule -Name Azcmdlet 找出版本。 如果您需要安裝或升級,請參閱安裝 Azure PowerShell。 - 要執行升級操作,你需要 Azure Kubernetes Service 貢獻者角色或等效權限。
- 當你升級到 Kubernetes 1.30 和 1.27 LTS 版本時,Beta API 預設會被停用。
警告
升級前務必確保你的運算配額足夠。 如果配額不足,升級可能會失敗。 如需詳細資訊,請參閱增加配額。
AKS 升級類型概述
下表列出三種 AKS 升級類型,重點說明其範圍與使用案例:
| 升級類型 | Scope | 用例 |
|---|---|---|
| 僅限控制平面 | API 伺服器、ETCD、控制器管理器、排程器 | 升級工作負載前先測試新的 Kubernetes API |
| 完整叢集 | 控制平面與所有節點池 | 標準升級以保持叢集的更新 |
| 僅限節點池 | 特定節點池 | 控制平面升級後的分段推出 |
小提示
先升級控制平面,可以讓你在影響執行工作負載前,先驗證 Kubernetes API 的相容性。 關於節點池升級策略,請參見 「配置滾動升級」。
Kubernetes 版本升級規則
當你升級支援的非 LTS AKS 叢集時,無法跳過 Kubernetes 的小型版本。 您必須依次要版本號碼循序執行所有升級。 例如,允許在 1.28.x 到>1.29.x 或 1.29.x 到>1.30.x 之間升級。 1.28.x 到>1.30.x 是不允許的。
LTS 叢集在升級至 AKS 提供較高的 LTS 版本時,若升級符合版本偏差要求與驗證檢查,則可跳過次要版本。 更多資訊請參閱: 我可以在叢集升級時跳過多個 AKS 版本嗎?。
從 Kubernetes 1.28 開始,控制平面最多可以比節點池高出三個小版本。 舉例來說,如果你的控制平面是 1.35.x,你的節點池可以是 1.32.x、 1.33.x、 1.34.x 或 1.35.x。 關於目前的限制,請參見 AKS 版本偏斜策略。
檢查可用的 AKS 升級
小提示
欲掌握最新的 AKS 發布與更新,請參閱 AKS 發布追蹤器。
請使用指令 az aks get-upgrades 查詢 AKS 叢集可用的 Kubernetes 版本。
az aks get-upgrades --resource-group <resource-group-name> --name <cluster-name> --output table
下列範例輸出顯示目前的版本為 1.28.9,並列出 upgrades 下出可用的版本:
Name ResourceGroup MasterVersion Upgrades
------- --------------- --------------- --------------
default <resource-group-name> 1.28.9 1.29.2, 1.29.4
只升級 AKS 控制平面
Important
啟用 叢集自動升級 時,無法只在控制平面進行升級。 叢集自動升級總是會同時升級控制平面和所有節點池。
用
az aks upgrade帶有--control-plane-only旗幟的指令升級控制平面。 以下範例將控制平面升級至 Kubernetes 版本 1.29.4:az aks upgrade \ --resource-group <resource-group-name> \ --name <cluster-name> \ --kubernetes-version 1.29.4 \ --control-plane-only請用指令
az aks show確認控制平面升級成功。az aks show --resource-group <resource-group-name> --name <cluster-name> --output table以下範例輸出顯示控制平面現在運行為 1.29.4:
Name Location ResourceGroup KubernetesVersion ProvisioningState Fqdn ------------ ---------- --------------- ------------------- ------------------- ------------------------------------------------ <cluster-name> eastus <resource-group-name> 1.29.4 Succeeded <cluster-name>-dns-123abcd4.hcp.eastus.azmk8s.io請用指令
az aks nodepool list確認節點池的版本沒有被更改。az aks nodepool list --resource-group <resource-group-name> --cluster-name <cluster-name> --query "[].{Name:name,Version:orchestratorVersion}" --output table在輸出中,節點池應該仍顯示先前的 Kubernetes 版本。
升級完整的 AKS 叢集
備註
在完整叢集升級過程中,AKS 會先升級控制平面,然後依序升級每個節點池。 欲了解更多節點池升級控制,請參閱 「配置滾動升級」。
用指令 az aks upgrade 升級整個叢集(控制平面和所有節點池)。 以下範例將叢集升級至 Kubernetes 版本 1.29.4:
az aks upgrade \
--resource-group <resource-group-name> \
--name <cluster-name> \
--kubernetes-version 1.29.4
AKS 控制平面升級常見問題(FAQ)
僅控制平面的升級也會升級節點池嗎?
否。 僅控制平面的升級不會改變節點池。 叢集自動升級 的運作方式不同:它不支援僅控制平面的升級,而是將控制平面和所有節點池一起升級。
我可以在控制平面之前先升級節點池嗎?
否。 控制平面版本必須始終等於或大於任何節點池版本。 你必須先升級控制平面。
控制平面升級需要多久時間?
升級時間會依叢集狀態和 Azure 條件而異。 監控 provisioningState 使用或 az aks showGet-AzAksCluster。 當配置狀態為 Succeeded時,升級即完成。
解決控制平面升級問題
沒有升級選項
對於未支援的叢集,請用來 az aks get-upgrades 檢查 AKS 是否提供符合資格的支援目標。 若有目標可用,則進行全叢集升級。 此恢復路徑不支援僅控制平面的升級。
如果沒有可用的目標,你的叢集可能已經是最新版本。 如果叢集運行的是不支援的版本,請建立一個支援版本的新叢集並遷移你的工作負載。
由於 API 已過時,升級失敗
升級前,請使用 kube-no-trouble(kubent)等工具檢查是否有已棄用的 API:
kubent
此指令會掃描透過目前 kubeconfig 上下文存取的資源,尋找已棄用的 Kubernetes API 版本。 輸出依 Kubernetes 版本將發現分組,並依 、 NAMESPACE、 NAMEAPI_VERSION、 及 來識別每個受影響的資源KIND。 升級前,更新每個列出資源的原始碼清單,使其使用支援的 API 版本。