Typowe problemy występujące podczas uruchamiania lub skalowania dużych klastrów usługi AKS — często zadawane pytania
Ten artykuł zawiera odpowiedzi na często zadawane pytania dotyczące typowych problemów, które mogą wystąpić podczas uruchamiania lub skalowania dużych klastrów w usłudze Microsoft Azure Kubernetes Service (AKS). Duży klaster to dowolny klaster, który działa w skali więcej niż 500 węzłów.
Otrzymuję błąd "przekroczono limit przydziału" podczas tworzenia, skalowania w górę lub uaktualniania
Aby rozwiązać ten problem, utwórz żądanie pomocy technicznej w subskrypcji, w której próbujesz utworzyć, skalować lub uaktualnić, i zażądać limitu przydziału odpowiedniego typu zasobu. Aby uzyskać więcej informacji, zobacz regionalne limity przydziału zasobów obliczeniowych.
Otrzymuję błąd "insufficientSubnetSize" podczas wdrażania klastra usługi AKS korzystającego z zaawansowanej sieci
Ten błąd wskazuje, że podsieć używana dla klastra nie ma już dostępnych adresów IP w ramach trasy CIDR w celu pomyślnego przypisania zasobu. Ten problem może wystąpić podczas uaktualniania, skalowania w poziomie lub tworzenia puli węzłów. Ten problem występuje, ponieważ liczba bezpłatnych adresów IP w podsieci jest mniejsza niż wynik następującej formuły:
liczba żądanych węzłów * wartość puli
--max-pod
węzłów
Wymagania wstępne
Aby skalować więcej niż 400 węzłów, należy użyć wtyczki sieci azure CNI.
Aby ułatwić planowanie sieci wirtualnej i podsieci w celu uwzględnienia liczby wdrożonych węzłów i zasobników, zobacz planowanie adresów IP dla klastra. Aby zmniejszyć obciążenie związane z planowaniem podsieci lub ponownym tworzeniem klastra, które należy wykonać z powodu wyczerpania adresów IP, zobacz Dynamiczna alokacja adresów IP.
Rozwiązanie
Ponieważ nie można zaktualizować istniejącego zakresu CIDR podsieci, musisz mieć uprawnienia do utworzenia nowej podsieci, aby rozwiązać ten problem. Wykonaj te kroki:
Ponownie skompiluj nową podsieć, która ma większy zakres CIDR, który jest wystarczający dla celów operacji.
Utwórz nową podsieć, która ma nowy, nienakładujący się zakres.
Utwórz nową pulę węzłów w nowej podsieci.
Opróżniaj zasobniki ze starej puli węzłów, która znajduje się w starej podsieci, która zostanie zastąpiona.
Usuń starą podsieć i starą pulę węzłów.
Mam sporadyczne błędy łączności wychodzącej z powodu wyczerpania portów SNAT
W przypadku klastrów, które działają na stosunkowo dużej skali (ponad 500 węzłów), zalecamy użycie bramy translatora adresów sieciowych (NAT) usługi AKS w celu zwiększenia skalowalności. Usługa Azure NAT Gateway umożliwia maksymalnie 64 512 przepływów ruchu wychodzącego UDP i TCP na adres IP oraz maksymalnie 16 adresów IP.
Jeśli nie używasz zarządzanego translatora adresów sieciowych, zobacz Rozwiązywanie problemów z wyczerpaniem adresów sieciowych (SNAT) i limitami czasu połączenia, aby zrozumieć i rozwiązać problemy z wyczerpaniem portów SNAT.
Nie mogę skalować do 5000 węzłów przy użyciu witryny Azure Portal
Użyj interfejsu wiersza polecenia platformy Azure, aby skalować w górę do maksymalnie 5000 węzłów, wykonując następujące kroki:
Utwórz minimalną liczbę pul węzłów w klastrze (ponieważ maksymalny limit węzłów puli węzłów wynosi 1000), uruchamiając następujące polecenie:
az aks nodepool add --resource-group MyResourceGroup --name nodepool1 --cluster-name MyManagedCluster
Skalowanie w górę pul węzłów pojedynczo. Najlepiej ustawić pięć minut snu między kolejnymi skalowaniem w poziomie 1000. Uruchom następujące polecenie:
az aks nodepool scale --resource-group MyResourceGroup --name nodepool1 --cluster-name MyManagedCluster
Moje uaktualnienie jest uruchomione, ale działa wolno
W domyślnej konfiguracji usługa AKS zwiększa się podczas uaktualniania, wykonując następujące akcje:
- Tworzenie jednego nowego węzła.
- Skalowanie puli węzłów poza żądaną liczbę węzłów według jednego węzła.
W przypadku ustawień maksymalnego wzrostu wartość domyślna jednego węzła oznacza, że usługa AKS tworzy jeden nowy węzeł, zanim opróżni istniejące aplikacje i zastąpi wcześniejszy węzeł. Ten dodatkowy węzeł pozwala usłudze AKS zminimalizować zakłócenia obciążenia.
Podczas uaktualniania klastrów z wieloma węzłami uaktualnienie całego klastra może potrwać kilka godzin, jeśli użyjesz wartości domyślnej max-surge
. Właściwość na pulę węzłów można dostosować max-surge
, aby umożliwić kompromis między szybkością uaktualniania a zakłóceniami uaktualniania. Zwiększając maksymalną wartość skoku, możesz włączyć proces uaktualniania do ukończenia wcześniej. Jednak duża wartość maksymalnego wzrostu może również spowodować zakłócenia w procesie uaktualniania.
Uruchom następujące polecenie, aby zwiększyć lub dostosować maksymalny wzrost dla istniejącej puli węzłów:
az aks nodepool update --resource-group MyResourceGroup --name mynodepool --cluster-name MyManagedCluster --max-surge 5
Ważne jest również, aby wziąć pod uwagę, w jaki sposób ustawienia wdrożenia mogą opóźnić ukończenie operacji uaktualniania lub skalowania:
- Maszyny wirtualne serii B rodziny jednostek SKU nie są obsługiwane przez usługę AKS w puli węzłów systemowych i mogą mieć niską wydajność podczas aktualizacji i po nich.
- Sprawdź ustawienia zasobów pdB wdrożenia, aby upewnić się, że są one dokładne pod kątem pomyślnego uaktualnienia. Aby uzyskać więcej informacji, zobacz AKS workload best practices (Najlepsze rozwiązania dotyczące obciążeń usługi AKS).
Napiwek
Aby uzyskać więcej szczegółowych informacji na temat tego zachowania, możesz wyświetlić szczegóły błędu na stronie Dziennik aktywności w witrynie Azure Portal lub przejrzeć dzienniki zasobów w klastrze.
Moje uaktualnienie osiąga limit przydziału (5000 klastrów)
Aby rozwiązać ten problem, zobacz Zwiększanie regionalnych przydziałów procesorów wirtualnych.
Tworzenie usługi wewnętrznej w ponad 750 węzłach działa wolno lub kończy się niepowodzeniem z powodu błędu przekroczenia limitu czasu
usługa Load Balancer w warstwie Standardowa (SLB) aktualizacje puli zaplecza są znanym wąskim gardłem wydajności. Pracujemy nad nową możliwością, która umożliwi szybsze tworzenie usług i SLB na dużą skalę. Aby wysłać nam swoją opinię na temat tego problemu, zobacz Azure Kubernetes support for load balancer with IP-based back-end pool (Obsługa usługi Azure Kubernetes dla modułu równoważenia obciążenia z pulą zaplecza opartą na adresach IP).
Rozwiązanie
Zalecamy skalowanie klastra w dół do mniej niż 750 węzłów, a następnie utworzenie wewnętrznego modułu równoważenia obciążenia dla klastra. Aby utworzyć wewnętrzny moduł równoważenia obciążenia, utwórz typ usługi i azure-load-balancer-internal
adnotację LoadBalancer
zgodnie z poniższą przykładową procedurą.
Krok 1. Tworzenie wewnętrznego modułu równoważenia obciążenia
Aby utworzyć wewnętrzny moduł równoważenia obciążenia, utwórz manifest usługi o nazwie internal-lb.yaml zawierający LoadBalancer
typ usługi i adnotację azure-load-balancer-internal
, jak pokazano w poniższym przykładzie:
apiVersion: v1
kind: Service
metadata:
name: internal-app
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: internal-app
Krok 2. Wdrażanie wewnętrznego modułu równoważenia obciążenia
Wdróż wewnętrzny moduł równoważenia obciążenia przy użyciu kubectl apply
polecenia i określ nazwę manifestu YAML, jak pokazano w poniższym przykładzie:
kubectl apply -f internal-lb.yaml
Po utworzeniu klastra można również aprowizować wewnętrzny moduł równoważenia obciążenia (zgodnie z tą procedurą) i zachować działanie wewnętrznej usługi o zrównoważonym obciążeniu. Dzięki temu można dodać więcej usług do modułu równoważenia obciążenia na dużą skalę.
Tworzenie usługi SLB na dużą skalę trwa kilka godzin
Aktualizacje puli zaplecza SLB są znanym wąskim gardłem wydajności. Pracujemy nad nową funkcją, która umożliwi uruchamianie usług o zrównoważonym obciążeniu na dużą skalę z znacznie szybszą wydajnością operacji tworzenia, aktualizowania i usuwania. Aby wysłać nam swoją opinię, zobacz Azure Kubernetes support for load balancer with IP-based back-end pool (Obsługa usługi Azure Kubernetes dla modułu równoważenia obciążenia z pulą zaplecza opartą na adresach IP).
Zastrzeżenie dotyczące innych firm
Produkty innych firm omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie udziela żadnych gwarancji, dorozumianych ani żadnego innego rodzaju, w odniesieniu do wydajności lub niezawodności tych produktów.
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.