先決條件
本文需要 Azure CLI 2.67.0 版或更新版本。 若要尋找版本號碼,請執行 az --version。 如果您必須安裝或升級 Azure CLI,請參閱如何 安裝 Azure CLI。
如需升級程式的詳細資訊,請參閱 Azure Kubernetes Service (AKS) 叢集的升級選項和建議中的「升級 AKS 叢集」一節。
癥狀
當您嘗試使用 Azure CLI 升級 AKS 叢集時,升級作業會遭到封鎖,並傳回下列一或多個錯誤訊息。
錯誤訊息 1:K8sVersionNotSupported
<ClusterName>是 1.25.6 版,此區域不支援。 請使用命令[az aks get-versions]取得此區域中支援的版本清單。 如需詳細資訊,請參閱 Azure Kubernetes Service (AKS) 中支援的 Kubernetes 版本。
錯誤訊息 2:OperationNotAllowed
不允許將 Kubernetes 版本 1.24.9 升級至 1.26.6。 可用升級:[1.29.15 1.29.14 1.29.13 1.29.12 1.29.11 1.29.10 1.29.9 1.29.8 1.29.7 1.29.6 1.29.5 1.29.4 1.29.2 1.29.0]。 如需詳細資訊,請參閱 AKS 支援的 Kubernetes 版本 ,以取得版本詳細資料。
錯誤訊息 3:NodePoolMcVersionIncompatible
節點集區 1.24.9 版和控制平面 1.29.15 版不相容。 節點集區的次要版本不能比控制平面的版本少 3 個版本。 節點集區的次要版本為 24,控制平面為 29。 如需詳細資訊,請參閱 AKS 升級版本偏差原則。
原因
由於下列一或多個原因,不允許升級:
選取的 Azure 區域不再支援目標 Kubernetes 版本 (例如 1.26 或 1.25)。
您不允許在升級期間略過次要版本(例如,從 1.24.x 到 1.26。x 或 1.27。x) 除非目前版本不受支援。
如果您嘗試只升級控制平面,則會發生控制平面與節點集區之間的版本偏差 (NodePoolMcVersionIncompatible)。 在此情況下,節點集區版本比控制平面版本落後超過三個次要版本。 此大小或更大的間隙會導致錯誤。
若要進一步瞭解這些錯誤,請參閱下列文章:
Solution
步驟 1:驗證目前版本和可用的升級路徑
若要檢視目前的 Kubernetes 版本和支援的升級目標,請執行下列命令:
az aks get-upgrades --resource-group <RG> --name <ClusterName> --output table
如果只有較新的版本,例如 1.29.x,而中間版本,例如 1.27.x,1.26.x,或 1.25.x,缺失,則表示這些版本在您所在的區域中已不再建議使用。
步驟 2:嘗試進行完整升級(將控制平面和節點集區一起升級)
由於版本偏差原則規定,控制平面不能比節點集區的版本多超過三個小版本,因此可能不允許單獨進行僅控制平面的升級。 相反,請將控制平面和節點池一同升級:
az aks upgrade --resource-group <RG> --name <ClusterName> --kubernetes-version <available upgrade version> --yes
此方法可確保下列條件適用:
- 您符合版本不一致性政策。
- 您使用支援的 Kubernetes 版本。
- 您可以以協調的方式升級這兩個元件。
其他提示
- 一律使用下列命令來驗證您所在區域中支援的版本:
az aks get-versions --location <region> --output table
避免嘗試升級至已淘汰的版本。 在此情況下,AKS 可能會強制立即跳至支援的長期版本 (例如,至 1.29 版) 。
如果 AKS 叢集執行違反偏差原則的過時 Kubernetes 版本,建議的最佳做法如下:
建立新的叢集: 使用支援的 Kubernetes 版本建立 AKS 叢集。
移轉工作負載: 若要確保您的工作負載在支援的版本上執行,請將它們傳輸到新的叢集。
避免跨多個版本升級: 不要透過多個次要版本進行升級,而是移至新的叢集,以將複雜性降到最低並避免潛在問題。
備份和驗證資料: 請確定在移轉之前備份並驗證所有資料。
徹底測試: 若要識別並解決任何相容性問題,請在預備環境中執行徹底測試。
(../../../includes/azure-help-support.md)