故障排除ZonalAllocationFailed、AllocationFailed 或 OverconstrainedAllocationRequest 錯誤代碼

總結

本文說明如何辨識並解決ZonalAllocationFailedAllocationFailedOverconstrainedAllocationRequest在嘗試建立、部署或更新 Azure Kubernetes Service (AKS) 叢集時可能發生的錯誤。

先決條件

為了排除這些錯誤,建議你具備以下先決條件:

癥狀

當你嘗試建立、升級或擴充叢集時,會收到以下其中一種錯誤訊息:

錯誤代碼:ZonalAllocationFailed

訊息:Allocation failed. We do not have sufficient capacity for the requested VM size in this zone. Read more about improving likelihood of allocation success at https://aka.ms/allocation-guidance. Please note that allocation failures can also arise if a proximity placement group is associated with this VMSS. See https://learn.microsoft.com/troubleshoot/azure/azure-kubernetes/error-code-zonalallocationfailed-allocationfailed for more details. This is not AKS controlled behavior, please ask help to VMSS team for allocation failure. If the error is due to capacity constrain, consider upgrade with maxUnavailable instead of maxSurge, details: aka.ms/aks/maxUnavailable.

錯誤代碼:AllocationFailed

訊息:The VM allocation failed due to an internal error. Please retry later or try deploying to a different location. Please note that allocation failures can also arise if a proximity placement group is associated with this VMSS. See https://learn.microsoft.com/troubleshoot/azure/azure-kubernetes/error-code-zonalallocationfailed-allocationfailed for more details. This is not AKS controlled behavior, please ask help to VMSS team for allocation failure.

錯誤代碼:OverconstrainedAllocationRequest

訊息:Create or update VMSS failed. Allocation failed. VM(s) with the following constraints cannot be allocated, because the condition is too restrictive. Please remove some constraints and try again. Constraints applied are: - Differencing (Ephemeral) Disks - Networking Constraints (such as Accelerated Networking or IPv6) - VM Size

原因 1:SKU 中的區域可用性有限

你是在一個區域內部署、升級或擴展叢集,而該區域對特定 SKU 的可用性有限。

解決方案 1:使用不同的 SKU、區域或區域

請嘗試下列一或多個方法:

  • 使用不同的 SKU 重新部署相同區域中的叢集。
  • 在該區域中的不同可用區重新部署叢集。
  • 在不同的區域中重新部署叢集。
  • 在不同的區域中建立新的節點集區,或使用不同的 SKU。

如需如何修正此錯誤的詳細資訊,請參閱 解決 SKU 無法使用的錯誤。

解決方案 2:當建立或擴增因所需虛擬機器大小的可用性受限而受阻時,就地調整節點集區大小

若其他相容的 VM 容量已足夠,則調整現有的 虛擬機器擴展集(VMSS)或虛擬機(VM)節點池大小以使用該大小。 AKS 透過滾動操作替換節點,所以你不必建立新的節點池並手動遷移工作負載。 此功能目前處於預覽階段,且需要目標 VM 大小的額外容量。 關於前置條件、限制與指示,請參閱 「原地調整 VMSS 節點池大小(預覽版)」。

解決方案三:當創建或縮放因特定區域限制而受阻時,使用自動區域配置

對於跨區域的工作負載,請建立或更新啟用自動區域放置的節點集區。 AKS 會選擇具備容量的可用區域,以容納所請求的虛擬機 SKU,並在後續擴展作業中重新評估區域可用性。 此功能目前仍處於預覽階段,若 Azure 無法在遵守每個區域限制的情況下分配所需節點,配置仍可能失敗。 關於前置條件、限制及指示,請參閱 Azure Kubernetes Service (preview)中的自動區域配置。

解決方案四:利用節點自動配置動態擴展

Node 自動配置 允許你根據工作負載需求自動配置虛擬機 SKU。 若因容量限制無法提供 SKU,節點自動配置(NAP)會根據客戶資源定義(CRD)中提供的規格(如 NodePool 和 AKSNodeClass)選擇另一種 SKU 類型。 當某些 SKU 容量有限時,這對於擴展情境非常有幫助。 欲了解更多關於配置 NAP 叢集的資訊,請參閱 Azure Kubernetes Service(AKS)中的「配置節點池以供節點自動配置(NAP) 」及 「配置 AKSNodeClass 資源用於節點自動配置(NAP)」的 Azure Kubernetes Service(AKS)中。

解決方案五:原地升級,使用 MaxUnavailable

如果你在升級時不需要突發節點,請參閱「 自訂不可用節點 」,了解如何利用現有容量升級。 設 MaxUnavailable 為大於零的值,且設 MaxSurge 為零。 升級過程會逐個封鎖並抽乾現有節點,並將 pod 逐出到剩餘節點。 這個過程不會建立緩衝節點。

解決方案 6:在 Portal 中使用 deployment recommender 來建立新叢集

在 Azure 入口建立 AKS 叢集時,如果所選節點池 SKU 在所選區域和區域中無法使用,部署推薦者會建議一個可用的替代 SKU、區域和區域組合。

解決方案 7:在叢集自動擴縮器中使用優先擴充器

叢集自動縮放器的 優先擴展器 允許你定義一個有序的節點池清單,依序嘗試擴展。 例如:先用現貨池(成本優化),再用隨需池(可用性備援)。 條件存取嘗試先實作最高優先權池。 若縮放失敗(例如因分配失敗),則嘗試下一個資源池。

Limitations

優先權擴展器有以下限制:

  • 條件存取不會建立新的節點池。 它只適用於現有的池子。 如果你想要動態 SKU 配置,可以用 NAP,它能根據 SKU 可用性建立池。
  • 優先擴充器是在節點池層級運作,不是 SKU 層級。 你必須為每個想使用的 SKU 家族預先建立池。

原因 2:虛擬機無法容納太多條件約束

如果你收到OverconstrainedAllocationRequest錯誤代碼,Azure Compute 平台無法分配新的虛擬機來符合所需的限制。 這些條件約束通常(但不總是)包含下列項目:

  • VM 大小
  • VM 產品規格
  • 加速化網路
  • 可用性區域
  • 暫時磁碟
  • 鄰近放置群組 (PPG)

解決方案:不要將鄰近配置群組與節點池關聯

如果你收到 OverconstrainedAllocationRequest 錯誤代碼,試著建立一個不與鄰近配置群組相關的新節點池。

原因 3:沒有足夠的專用主機或容錯網域

您嘗試在容量有限或不符合容錯網域條件約束的專用主機群組中部署節點集區。

解決方案:確保你有足夠的專用主機來安裝 AKS 節點/VMSS

根據 AKS 上的 ADH 容量規劃,您必須負責規劃足夠的專用主機,以跨越 AKS VMSS 所需的多個容錯網域。 例如,如果使用FaultDomainCount=2 建立 AKS VMSS,則至少需要不同容錯網域中的兩部專用主機(FaultDomain 0 和 FaultDomain 1)。

詳細資訊

確保使用者的容量是 Microsoft 的首要任務。 Azure 服務越來越受歡迎,強調需要更快速地擴大基礎結構。 基於這個目標,我們加快擴展進度並優化資源部署流程,以回應強勁的客戶需求。 我們也會每月新增大量的運算基礎結構。

我們找出了幾種方法,以改善在高資源使用情況下的負載平衡,以及如何觸發所需資源的及時部署。 此外,我們也大幅提升產能,並持續規劃所有地區的強勁需求。 如需我們針對提供彈性雲端供應鏈而進行改善的詳細資訊,請參閱 透過彈性的雲端供應鏈提升可靠性。

參考資料