Udostępnij za pośrednictwem


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:

  1. Ponownie skompiluj nową podsieć, która ma większy zakres CIDR, który jest wystarczający dla celów operacji.

  2. Utwórz nową podsieć, która ma nowy, nienakładujący się zakres.

  3. Utwórz nową pulę węzłów w nowej podsieci.

  4. Opróżniaj zasobniki ze starej puli węzłów, która znajduje się w starej podsieci, która zostanie zastąpiona.

  5. 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:

  1. 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
    
  2. 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:

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.