Rozwiązywanie problemów związanych z kodami błędów ZonalAllocationFailed, AllocationFailed lub OverconstrainedAllocationRequest

Podsumowanie

W tym artykule opisano sposób identyfikowania ZonalAllocationFailedi rozwiązywania błędów , AllocationFailedlubOverconstrainedAllocationRequest, które mogą wystąpić podczas próby utworzenia, wdrożenia lub zaktualizowania klastra Azure Kubernetes Service (AKS).

Wymagania wstępne

Aby rozwiązać te problemy, sugerowane są następujące wymagania wstępne:

  • Azure CLI (opcjonalnie), wersja 2.86.0 lub nowsza. Jeśli Azure CLI jest już zainstalowana, użyj polecenia az --version , aby sprawdzić numer wersji.
  • Azure PowerShell (opcjonalnie).

Objawy

Podczas próby utworzenia, uaktualnienia lub skalowania klastra w górę zostanie wyświetlony jeden z następujących komunikatów o błędach:

Kod: ZonalAllocationFailed

Wiadomość: 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.

Kod: AllocationFailed

Wiadomość: 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.

Kod: OverconstrainedAllocationRequest

Wiadomość: 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

Przyczyna 1. Ograniczona dostępność strefy w jednostce SKU

Próbujesz wdrożyć, uaktualnić lub skalować klaster w strefie, która ma ograniczoną dostępność dla określonej pozycji SKU.

Rozwiązanie 1. Używanie innej jednostki SKU, strefy lub regionu

Spróbuj wykonać co najmniej jedną z następujących metod:

  • Ponownie wdróż klaster w tym samym regionie przy użyciu innej jednostki SKU.
  • Ponownie wdróż klaster w innej strefie w tym regionie.
  • Ponownie wdróż klaster w innym regionie.
  • Utwórz nową pulę węzłów w innej strefie lub użyj innego SKU.

Aby uzyskać więcej informacji na temat naprawiania tego błędu, zobacz Rozwiązywanie problemów z niedostępną jednostkę SKU.

Rozwiązanie 2: Zmiana rozmiaru puli węzłów na miejscu, gdy tworzenie lub skalowanie jest zablokowane z powodu braku dostępności wymaganego rozmiaru maszyny wirtualnej

Jeśli inny zgodny rozmiar maszyny wirtualnej ma pojemność, zmień rozmiar istniejącej puli węzłów Virtual Machine Scale Sets (VMSS) lub maszyny wirtualnej, aby użyć tego rozmiaru. Usługa AKS zastępuje węzły przez operację kroczącą, więc nie trzeba tworzyć nowej puli węzłów i ręcznie migrować obciążenia. Ta funkcja jest obecnie dostępna w wersji zapoznawczej i wymaga zwiększenia pojemności docelowej maszyny wirtualnej. Aby uzyskać informacje o wymaganiach, ograniczeniach i instrukcjach, zobacz Zmienianie rozmiaru puli węzłów zestawu skalowania maszyn wirtualnych na miejscu (wersja zapoznawcza).

Rozwiązanie 3: Użyj automatycznego rozmieszczania stref, gdy tworzenie lub skalowanie jest blokowane przez określone ograniczenia strefowe

W przypadku obciążeń rozproszonych na wiele stref utwórz lub zaktualizuj pulę węzłów, korzystając z automatycznego rozmieszczania w strefach. Usługa AKS wybiera strefy dostępności, które dysponują zasobami dla żądanego rozmiaru jednostki SKU maszyny wirtualnej, i ponownie ocenia dostępność stref podczas późniejszych operacji skalowania w poziomie. Ta funkcja jest obecnie dostępna w wersji zapoznawczej, a przydział może nadal zakończyć się niepowodzeniem, jeśli platforma Azure nie może przydzielić żądanych węzłów przy jednoczesnym zachowaniu limitu dla każdej strefy. Aby uzyskać wymagania wstępne, ograniczenia i instrukcje, zobacz Automatyczne umieszczanie strefy w Azure Kubernetes Service (wersja zapoznawcza).

Rozwiązanie 4: Dynamiczne skalowanie za pomocą automatycznego udostępniania węzłów

Automatyczne aprowizowanie węzła umożliwia automatyczne aprowizowanie jednostek SKU maszyn wirtualnych w zależności od potrzeb związanych z obciążeniem. Jeśli jednostka SKU nie jest dostępna z powodu ograniczeń pojemności, automatyczne aprowizowanie węzłów (NAP) wybiera inny typ jednostki SKU na podstawie specyfikacji podanych w definicjach zasobów klienta (CRD), takich jak NodePool i AKSNodeClass. Może to być przydatne w scenariuszach skalowania, gdy określona pojemność jednostki SKU stanie się ograniczona. Aby uzyskać więcej informacji na temat konfigurowania klastra NAP, zobacz Konfiguracja pule węzłów do automatycznego dostarczania węzłów (NAP) w usłudze Azure Kubernetes Service (AKS) i Konfiguracja zasobów AKSNodeClass dla automatycznego dostarczania węzłów (NAP) w usłudze Azure Kubernetes Service (AKS).

Rozwiązanie 5: Uaktualnienie w miejscu za pomocą MaxUnavailable

Jeśli podczas uaktualniania nie potrzebujesz węzłów przepięcia, zobacz Dostosowywanie niedostępnych węzłów , aby uzyskać informacje na temat uaktualniania z istniejącą pojemnością. Ustaw MaxUnavailable na wartość większą niż zero i ustaw MaxSurge na zero. Kordon procesu uaktualniania i opróżnia istniejące węzły pojedynczo i eksmituje zasobniki do pozostałych węzłów. Proces nie tworzy węzła buforu.

Rozwiązanie 6. Korzystanie z modułu rekomendacji wdrażania w portalu w celu utworzenia nowego klastra

Jeśli podczas tworzenia klastra usługi AKS w witrynie Azure Portal wybrana jednostka SKU puli węzłów nie jest dostępna w wybranym regionie i strefach, zaleca się użycie alternatywnej jednostki SKU, stref i regionu, która ma dostępność.

Rozwiązanie 7. Używanie rozszerzeń priorytetów z funkcją skalowania automatycznego klastra

Rozszerzenie priorytetu automatycznego skalowania klastra umożliwia zdefiniowanie uporządkowanej listy pul węzłów do próby skalowania w sekwencji. Na przykład: Najpierw pule typu spot (optymalizacja kosztów), a następnie pule na żądanie (alternatywa w przypadku braku dostępności). Dostęp warunkowy próbuje najpierw zaimplementować pulę o najwyższym priorytecie. Jeśli skalowanie nie powiedzie się (na przykład z powodu błędu alokacji), spróbuje uruchomić następną pulę.

Limitations

Następujące ograniczenia dotyczą rozszerzenia priorytetu:

  • Dostęp warunkowy nie tworzy nowych pul węzłów. Działa tylko z istniejącymi pulami. Jeśli chcesz zapewnić dynamiczne przydzielanie jednostek SKU, użyj NAP, który może tworzyć pule na podstawie dostępności SKU.
  • Ekspander priorytetu działa na poziomie puli węzłów, a nie na poziomie SKU. Należy wstępnie utworzyć pule dla każdej rodziny jednostek SKU, której chcesz użyć.

Przyczyna 2: Zbyt wiele ograniczeń, które musi spełnić maszyna wirtualna

Jeśli zostanie wyświetlony OverconstrainedAllocationRequest kod błędu, platforma Azure Compute nie może przydzielić nowej maszyny wirtualnej w celu uwzględnienia wymaganych ograniczeń. Te ograniczenia obejmują zwykle (ale nie zawsze) następujące elementy:

  • Rozmiar maszyny wirtualnej
  • SKU VM
  • Przyspieszona sieć
  • Strefa dostępności
  • Dysk efemeryczny
  • Grupa lokalizacji w pobliżu (PPG)

Rozwiązanie: nie kojarzyj grupy umieszczania w pobliżu z pulą węzłów

Jeśli otrzymasz kod błędu OverconstrainedAllocationRequest, spróbuj utworzyć nową pulę węzłów, która nie jest skojarzona z grupą rozmieszczenia bliskości.

Przyczyna 3: Za mało dedykowanych hostów lub domeny awarii

Próbujesz wdrożyć pulę węzłów w dedykowanej grupie hostów, która ma ograniczoną pojemność lub nie spełnia ograniczeń domeny błędów.

Rozwiązanie: Upewnij się, że masz wystarczająco dużo dedykowanych hostów dla węzłów usługi AKS/usługi VMSS

Zgodnie z planowaniem pojemności usługi ADH w usłudze AKS odpowiadasz za planowanie wystarczającej liczby dedykowanych hostów, aby obejmowały tyle domen błędów, ile jest wymaganych przez usługę AKS VMSS. Jeśli na przykład usługa AKS VMSS jest tworzona przy użyciu parametru FaultDomainCount=2, potrzebujesz co najmniej dwóch dedykowanych hostów w różnych domenach błędów (FaultDomain 0 i FaultDomain 1).

Więcej informacji

Zapewnienie pojemności dla użytkowników jest najwyższym priorytetem dla Microsoft. Rosnąca popularność usług platformy Azure podkreśla potrzebę jeszcze szybszego skalowania w górę infrastruktury. Mając na uwadze ten cel, przyspieszamy rozszerzanie i ulepszamy nasz proces wdrażania zasobów, aby reagować na silne zapotrzebowanie klientów. Dodajemy również dużą ilość infrastruktury obliczeniowej co miesiąc.

Zidentyfikowaliśmy kilka metod ulepszania sposobu równoważenia obciążenia w sytuacji wysokiego użycia zasobów i sposobu wyzwalania terminowego wdrażania potrzebnych zasobów. Ponadto znacznie zwiększamy naszą pojemność i nadal planujemy duże zapotrzebowanie we wszystkich regionach. Aby uzyskać więcej informacji na temat ulepszeń, które wprowadzamy w kierunku dostarczania odpornego łańcucha dostaw w chmurze, zobacz Postęp niezawodności dzięki odpornemu łańcuchowi dostaw w chmurze.

Źródła