Udostępnij za pośrednictwem


Rozwiązywanie problemów z klastrami lub węzłami usługi Azure Kubernetes Service w stanie niepowodzenia

W tym artykule omówiono sposób rozwiązywania problemów z klastrem lub węzłem usługi Microsoft Azure Kubernetes Service (AKS), który wchodzi w stan niepowodzenia.

Typowe przyczyny

Poniżej przedstawiono typowe przyczyny niepowodzenia klastra lub puli węzłów:

Przyczyna Odwołanie
Błąd aprowizacji rozszerzenia niestandardowego skryptu (CSE) maszyny wirtualnej Rozwiązywanie problemów z błędami braku gotowości węzła spowodowanymi błędami CSE
Kluczowe zasoby platformy Azure są niedostępne
Niepowodzenie alokacji maszyny wirtualnej z powodu braku pojemności strefowej/regionalnej
Niepowodzenie alokacji maszyny wirtualnej z powodu przekroczenia limitu przydziału rdzeni Błąd limitu przydziału
Ograniczenia nałożone przez klienta
Problemy z obciążeniem

Podstawowe rozwiązywanie problemów z typowymi błędami powodującymi niepowodzenie klastra/węzła

W poniższej tabeli przedstawiono niektóre typowe błędy, które mogą spowodować, że klaster lub węzeł wprowadzi stan niepowodzenia, ich opisy i podstawowe metody rozwiązywania problemów w celu rozwiązania tych błędów.

Błąd opis Metoda rozwiązywania problemów
OutboundConnFailVMExtensionError Ten błąd wskazuje, że nie można zainstalować lub zaktualizować rozszerzenia maszyny wirtualnej z powodu braku łączności wychodzącej. Sprawdź reguły sieciowej grupy zabezpieczeń i ustawienia zapory maszyny wirtualnej lub zestawu skalowania maszyn wirtualnych. Upewnij się, że zestaw skalowania maszyn wirtualnych lub maszyn wirtualnych ma dostęp do następujących punktów końcowych: https://aka.ms/aks/outbound, , https://aka.ms/aks/sshhttps://aka.ms/aks/agenti https://aka.ms/aks/containerinsights.
Błąd opróżniania Ten błąd wskazuje, że nie można opróżnić węzła przed operacją uaktualniania. Sprawdź stan zasobnika i zdarzenia w węźle przy użyciu poleceń kubectl: kubectl get pods --all-namespaces -o wide i kubectl describe pod <pod-name> -n <namespace>. Poszukaj wszystkich zasobników zablokowanych w stanie zakończonym lub nieznanym albo z błędami lub ostrzeżeniami w zdarzeniach. Może być konieczne wymusie usunięcie zasobników lub ponowne uruchomienie usługi kubelet w węźle.
Błąd SubscriptionNotRegistered Ten błąd wskazuje, że subskrypcja nie jest zarejestrowana do korzystania z dostawcy zasobów usługi AKS. Zarejestruj subskrypcję przy użyciu az provider register --namespace Microsoft.ContainerService polecenia .
RequestDisallowedByPolicy error (Błąd RequestDisallowedByPolicy) Ten błąd wskazuje, że operacja jest blokowana przez zasady zastosowane do subskrypcji lub grupy zasobów. Przejrzyj szczegóły zasad i zakresy przypisywania zasad. Aby zezwolić na operację, może być konieczne zmodyfikowanie lub wykluczenie zasad.
Błąd QuotaExceeded Ten błąd wskazuje, że operacja przekracza limit przydziału dla typu zasobu lub regionu. Sprawdź bieżące użycie limitu przydziału i limit przydziału dla typu zasobu lub regionu przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Może być konieczne usunięcie niektórych nieużywanych zasobów lub zażądanie zwiększenia limitu przydziału.
Błąd PublicIPCountLimitReached Ten błąd wskazuje, że operacja osiąga maksymalną liczbę publicznych adresów IP, które można utworzyć w subskrypcji lub regionie. Sprawdź bieżące użycie publicznego adresu IP i limit dla subskrypcji lub regionu przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Może być konieczne usunięcie niektórych nieużywanych publicznych adresów IP lub zażądanie zwiększenia limitu publicznego adresu IP.
Błąd OverconstrainedAllocationRequest Ten błąd wskazuje, że operacja nie może przydzielić żądanego rozmiaru maszyny wirtualnej w regionie. Sprawdź dostępność rozmiaru maszyny wirtualnej w regionie przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Może być konieczne wybranie innego rozmiaru maszyny wirtualnej lub innego regionu.
Błąd ReadOnlyDisabledSubscription Ten błąd wskazuje, że subskrypcja jest obecnie wyłączona i ustawiona na tylko do odczytu. Przejrzyj i dostosuj uprawnienia subskrypcji, ponieważ subskrypcja mogła zostać zawieszona z powodu problemów z rozliczeniami, wygasłych środków lub naruszeń zasad.

Podstawowe rozwiązywanie innych możliwych problemów powodujących niepowodzenie klastra/węzła

W tej tabeli opisano inne możliwe problemy, które mogą spowodować, że klaster lub węzeł wejdzie w stan niepowodzenia, ich opisy i rozwiązania tych problemów.

Problem opis Rozwiązanie
Rozmiar podsieci jest za mały Operacja nie może utworzyć ani zaktualizować klastra, ponieważ podsieć nie ma wystarczającej ilości miejsca, aby pomieścić wymaganą liczbę węzłów. Usuń pulę węzłów i utwórz nową z większym rozmiarem podsieci przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.
Sieć wirtualna jest zablokowana Operacja nie może komunikować się z serwerem interfejsu API klastra lub płaszczyzną sterowania Kubernetes, ponieważ zapora lub niestandardowy system nazw domen (DNS) blokuje połączenia wychodzące z węzłów. Zezwól na ruch węzła w zaporze i skonfiguruj rozpoznawanie nazw DNS na platformie Azure przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.
Problemy z plikiem PDB Operacja nie może zaktualizować klastra, ponieważ plik PDB zatrzymał usunięcie co najmniej jednego zasobnika. PdB to zasób, który ogranicza liczbę zasobników, które mogą zostać dobrowolnie zakończone w określonym okresie. Tymczasowo usuń plik PDB, uzgodnij klaster, a następnie ponownie dodaj plik PDB przy użyciu narzędzia wiersza polecenia kubectl.
Problemy z infrastrukturą Operacja nie może zaktualizować klastra z powodu wewnętrznego problemu z usługą Azure Resource Manager (ARM), która zarządza zasobami na platformie Azure. Wykonaj uzgadnianie puli agentów dla każdej puli węzłów i uzgodnień dla klastra zarządzanego przy użyciu interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.
Błędy serwera interfejsu API Operacja nie może nawiązać połączenia z serwerem interfejsu API klastra ani płaszczyzną sterowania Kubernetes z powodu awarii lub błędu. Zgłoś go zespołowi pomocy technicznej usługi AKS i podaj odpowiednie dzienniki i informacje diagnostyczne. Dzienniki i informacje diagnostyczne można uzyskać przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.

Uwaga 16.

  • Operacja wymieniona w poprzedniej tabeli odnosi się do dowolnej operacji aktualizacji (PUT) wyzwolonej po stronie klienta.
  • Na platformie Kubernetes znajduje się składnik w obrębie kontrolera. Zapewnia rzeczywisty stan świata, w tym stan klastra i potencjalnie zewnętrzne stany, takie jak uruchamianie kontenerów dla rozwiązania Kubelet lub modułów równoważenia obciążenia dla dostawcy usług w chmurze. Jest on zgodny z żądanym stanem określonym w obiekcie. Ten proces wyrównania jest kluczową funkcją kontrolera. W przypadku usługi AKS ten składnik zapewnia, że stan klastra usługi AKS jest zgodny z żądaną konfiguracją. Aby go wyzwolić ręcznie, uruchom polecenie az resource update --ids <AKS cluster id>. Identyfikator klastra usługi AKS można uzyskać, uruchamiając polecenie az aks show -n <cluster name> -g <cluster resource group> -o json --query id. Jeśli istnieją jakiekolwiek różnice między rzeczywistymi i żądanymi stanami, podejmij niezbędne działania w celu skorygowania tych rozbieżności.

Sprawdzanie stanu aprowizacji

Aby sprawdzić stan klastra, wybierz pozycję Aprowizowanie sprawdzania stanu. Następnie jest wyświetlany stan aprowizacji klastra i puli agentów.

Zrzut ekranu przedstawiający opcję

Scenariusz 1. Klaster jest w stanie niepowodzenia

Aby rozwiązać ten problem, pobierz operację, która powoduje błąd i usterka. Poniżej przedstawiono dwa typowe błędy operacji, które mogą spowodować niepowodzenie klastra:

  • Niepowodzenie tworzenia klastra
  • Uaktualnianie klastra nie powiodło się

Jeśli ostatnio utworzony lub uaktualniony klaster jest w stanie niepowodzenia, użyj następujących metod, aby rozwiązać problem z niepowodzeniem:

Wyświetlanie dziennika aktywności klastra, który zakończył się niepowodzeniem przy użyciu witryny Azure Portal

Aby wyświetlić dzienniki aktywności klastra, który zakończył się niepowodzeniem w witrynie Azure Portal, wykonaj następujące kroki:

  1. W witrynie Azure Portal przejdź do strony Grupy zasobów i wybierz grupę zasobów zawierającą klaster.

  2. Na stronie Przegląd wybierz nazwę klastra z listy zasobów.

  3. Na stronie klastra wybierz pozycję Dziennik aktywności z menu po lewej stronie.

  4. Na stronie Dziennik aktywności można filtrować zdarzenia według stanu, przedziału czasu, zdarzenia zainicjowanego przez i kategorii Zdarzenia. Możesz na przykład wybrać pozycję Niepowodzenie z listy rozwijanej Stan , aby wyświetlić tylko zdarzenia, które zakończyły się niepowodzeniem.

    Zrzut ekranu przedstawiający sposób filtrowania zdarzeń na stronie

  5. Aby sprawdzić szczegóły zdarzenia, wybierz nazwę zdarzenia z listy. Zostanie otwarte nowe okienko z podsumowaniem zdarzeń, właściwościami i danymi JSON. Możesz również pobrać dane JSON jako plik.

  6. Aby sprawdzić kod błędu i komunikat skojarzony ze zdarzeniem, przewiń w dół do sekcji Stan w podsumowaniu zdarzenia. Informacje o błędach można również znaleźć w sekcjach właściwości i danych JSON.

Wyświetlanie dziennika aktywności klastra, który zakończył się niepowodzeniem przy użyciu interfejsu wiersza polecenia platformy Azure

Jeśli wolisz użyć interfejsu wiersza polecenia platformy Azure do wyświetlenia dziennika aktywności klastra, które zakończyło się niepowodzeniem, wykonaj następujące kroki:

  1. Zainstaluj interfejs wiersza polecenia platformy Azure na swojej maszynie i zaloguj się przy użyciu konta platformy Azure.

  2. Wyświetl listę grup zasobów w subskrypcji przy użyciu az group list polecenia i znajdź nazwę grupy zasobów, która zawiera klaster.

  3. Wyświetl listę zasobów w grupie zasobów przy użyciu az resource list polecenia z parametrem --resource-group i znajdź nazwę klastra.

  4. Wyświetl listę dziennika aktywności klastra przy użyciu az monitor activity-log list polecenia z parametrami --resource-group i --resource . Można również użyć parametrów --status, , --end-time--start-time, --calleri --filter do filtrowania zdarzeń według różnych kryteriów. Na przykład można użyć --status Failed polecenia , aby wyświetlić tylko zdarzenia, które zakończyły się niepowodzeniem.

  5. Pokaż szczegóły określonego zdarzenia przy użyciu az monitor activity-log show polecenia z parametrami --resource-group, --resourcei --event-id . Identyfikator zdarzenia można znaleźć w danych wyjściowych poprzedniego polecenia. Dane wyjściowe będą zawierać podsumowanie zdarzeń, właściwości i dane JSON. Możesz również użyć parametru --output , aby zmienić format danych wyjściowych.

  6. Aby wyświetlić kod błędu i komunikat skojarzony ze zdarzeniem, poszukaj statusMessage pola w danych wyjściowych polecenia. Informacje o błędach można również znaleźć w sekcjach właściwości i danych JSON.

    Zrzut ekranu przedstawiający dane JSON.

Korzystanie z funkcji Diagnozowanie i rozwiązywanie problemów w usłudze AKS dla klastra, który zakończył się niepowodzeniem

W witrynie Azure Portal przejdź do zasobu klastra usługi AKS i wybierz pozycję Diagnozuj i rozwiąż problemy z menu po lewej stronie. Zostanie wyświetlona lista kategorii i scenariuszy, które można wybrać, aby uruchomić testy diagnostyczne i uzyskać zalecane rozwiązania.

W interfejsie wiersza polecenia platformy Azure użyj az aks collect polecenia z parametrami --name i --resource-group , aby zebrać dane diagnostyczne z węzłów klastra. Możesz również użyć --storage-account parametrów i --sas-token , aby określić konto usługi Azure Storage, na którym zostaną przekazane dane. Dane wyjściowe będą zawierać link do bloku Diagnozowanie i rozwiązywanie problemów , w którym można wyświetlić wyniki i sugerowane akcje.

W bloku Diagnozowanie i rozwiązywanie problemów możesz wybrać pozycję Problemy z klastrem jako kategorię. Jeśli zostaną wykryte jakiekolwiek problemy, zostanie wyświetlona lista możliwych rozwiązań, które można wykonać, aby je rozwiązać.

Zrzut ekranu przedstawiający możliwe rozwiązania w portalu

Scenariusz 2. Węzeł jest w stanie niepowodzenia

W rzadkich przypadkach operacja odłączania dysku platformy Azure może częściowo zakończyć się niepowodzeniem, co spowoduje pozostawienie maszyny wirtualnej węzła w stanie niepowodzenia.

Aby rozwiązać ten problem, ręcznie zaktualizuj stan maszyny wirtualnej przy użyciu jednej z następujących metod:

  • W przypadku klastra opartego na zestawie dostępności uruchom następujące polecenie az vm update :

    az vm update --resource-group <resource-group-name> --name <vm-name>
    
  • W przypadku klastra opartego na zestawie skalowania maszyn wirtualnych uruchom następujące polecenie az vmss update-instances :

    az vmss update-instances --resource-group <resource-group-name> --name <scale-set-name> --instance-id <vm-or-scale-set-id>
    

Scenariusz 3. Pula węzłów jest w stanie niepowodzenia

Ten problem może wystąpić, gdy zestaw skalowania maszyn wirtualnych lub zestaw dostępności obsługujący pulę węzłów napotka błąd podczas aprowizacji, skalowania lub aktualizowania. Ten problem może być spowodowany niewystarczającą pojemnością, limitami przydziału, problemami z siecią, naruszeniami zasad, blokadami zasobów lub innymi czynnikami, które uniemożliwiają przydzielanie lub prawidłowe konfigurowanie maszyny wirtualnej.

Aby rozwiązać ten problem, wykonaj następujące czynności:

  1. Sprawdź stan puli węzłów przy użyciu az aks nodepool show polecenia . Jeśli stan aprowizacji to Failed, możesz zobaczyć komunikat o błędzie i kod w danych wyjściowych.
  2. Sprawdź stan zestawu skalowania maszyn wirtualnych lub zestawu dostępności przy użyciu az vmss show polecenia lub az vm availability-set show . Jeśli stan aprowizacji to Failed, możesz zobaczyć komunikat o błędzie i kod w danych wyjściowych.
  3. Sprawdź stan pojedynczej maszyny wirtualnej w puli węzłów przy użyciu az vmss list-instances polecenia lub az vm list . Jeśli jakakolwiek maszyna wirtualna Failed jest w stanie lub Unhealthy , możesz zobaczyć komunikat o błędzie i kod w danych wyjściowych.
  4. Sprawdź dziennik aktywności i ustawienie diagnostyczne zestawu skalowania maszyn wirtualnych lub zestawu dostępności, aby sprawdzić, czy istnieją zdarzenia lub alerty wskazujące przyczynę awarii. Aby uzyskać dostęp do dziennika aktywności i ustawienia diagnostycznego, możesz użyć witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub interfejsu API usługi Azure Monitor.
  5. Sprawdź limit przydziału i pojemność regionu i subskrypcji, w którym wdrożono pulę węzłów. Możesz użyć az vm list-usage polecenia lub witryny Azure Portal, aby sprawdzić limit przydziału i pojemność. Jeśli osiągnięto limit przydziału lub pojemności, możesz zażądać zwiększenia lub usunięcia niektórych nieużywanych zasobów.
  6. Sprawdź zasady i przypisania ról puli węzłów. Możesz użyć az policy poleceń i az role lub witryny Azure Portal, aby sprawdzić definicje zasad, przypisania, zgodność i wykluczenia. Możesz również sprawdzić przypisania ról i uprawnienia puli węzłów przy użyciu az role assignment polecenia lub witryny Azure Portal.
  7. Sprawdź blokady zasobów puli węzłów. Możesz użyć az lock polecenia lub witryny Azure Portal, aby sprawdzić poziom blokady, zakres i uwagi. Możesz również usunąć lub zaktualizować blokadę w razie potrzeby.

Inne narzędzia rejestrowania i diagnostyki

Jeśli poprzednie metody rozwiązywania problemów nie rozwiążą problemu, możesz użyć następujących narzędzi rejestrowania i diagnostyki, aby zebrać więcej informacji i zidentyfikować główną przyczynę:

  • Usługa Azure Monitor dla kontenerów:

    Ta usługa zbiera i analizuje metryki i dzienniki z klastrów usługi AKS i węzłów. Usługa Azure Monitor dla kontenerów może monitorować kondycję klastra i węzła, wydajność i dostępność. Można go również użyć do wyświetlania dzienników kontenera, dzienników kubeletu i dzienników diagnostycznych rozruchu węzła.

  • Peryskop usługi AKS

    To narzędzie zbiera dzienniki węzłów i zasobników, informacje o sieci i konfigurację klastra z klastra usługi AKS i przekazuje je do konta usługi Azure Storage. To narzędzie może pomóc w rozwiązywaniu typowych problemów z klastrem, takich jak rozpoznawanie nazw DNS, łączność sieciowa i stan węzła. Można go również użyć do wygenerowania żądania pomocy technicznej z dołączonymi zebranymi dziennikami.

  • Diagnostyka usługi AKS

    To narzędzie uruchamia serię kontroli klastrów usługi AKS i węzłów oraz udostępnia zalecenia i kroki korygowania typowych problemów. To narzędzie może pomóc w rozwiązywaniu problemów związanych z tworzeniem, uaktualnianiem, skalowaniem, siecią, magazynem i zabezpieczeniami. Można go również użyć do wygenerowania żądania pomocy technicznej z dołączonymi wynikami diagnostycznymi.

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.