Udostępnij za pośrednictwem


Rozwiązywanie problemów z Azure Kubernetes Service klastrami lub węzłami 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 przechodzi 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 niepowodzeniami braku gotowości węzła spowodowanymi błędami CSE
Kluczowe zasoby platformy Azure niedostępne
Błąd alokacji maszyny wirtualnej z powodu braku pojemności strefowej/regionalnej
Błąd 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 typowych błędów powodujących niepowodzenie klastra/węzła

W poniższej tabeli przedstawiono niektóre typowe błędy, które mogą powodować wprowadzenie stanu niepowodzenia klastra lub węzła, ich opisów i podstawowych metod rozwiązywania problemów w celu rozwiązania tych błędów.

Error 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 maszyna wirtualna lub zestaw skalowania maszyn wirtualnych mogą uzyskiwać dostęp do tych punktów końcowych: https://aka.ms/aks/outbound, https://aka.ms/aks/ssh, https://aka.ms/aks/agent, i https://aka.ms/aks/containerinsights.
Błąd opróżniania Ten błąd wskazuje, że węzeł nie może opróżnić się przed operacją uaktualnienia. 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 wymuszanie usunięcia 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 .
Błąd RequestDisallowedByPolicy Ten błąd wskazuje, że operacja jest zablokowana 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 Azure Portal, interfejsu wiersza polecenia platformy Azure lub 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 i limit publicznych adresów IP dla subskrypcji lub regionu przy użyciu Azure Portal, interfejsu wiersza polecenia platformy Azure lub Azure PowerShell. Może być konieczne usunięcie niektórych nieużywanych publicznych adresów IP lub zażądanie zwiększenia limitu publicznych adresów 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 Azure Portal, interfejsu wiersza polecenia platformy Azure lub 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 wartość 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ą powodować wprowadzenie stanu niepowodzenia klastra lub węzła, ich opisów i rozwiązań w celu rozwiązania tych problemów.

Problem Opis Rozwiązanie
Rozmiar podsieci jest za mały Operacja nie może utworzyć lub 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 Azure Portal, interfejsu wiersza polecenia platformy Azure lub Azure PowerShell.
Sieć wirtualna jest zablokowana Operacja nie może ujednolicić z serwerem interfejsu API klastra lub płaszczyzną sterowania Kubernetes, ponieważ ustawienie zapory lub niestandardowego systemu nazw domen (DNS) blokuje połączenia wychodzące z węzłów. Zezwalaj na ruch węzła na zaporze i skonfiguruj rozpoznawanie nazw DNS na platformie Azure przy użyciu Azure Portal, interfejsu wiersza polecenia platformy Azure lub Azure PowerShell.
Problemy z bazą danych PDB Operacja nie może zaktualizować klastra, ponieważ baza danych PDB zatrzymała usuwanie 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ń bazę danych PDB, uzgodnij klaster, a następnie ponownie dodaj bazę danych 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. Uzgadnianie puli agentów dla każdej puli węzłów i uzgadnianie klastra zarządzanego przy użyciu interfejsu wiersza polecenia platformy Azure lub 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 usterki. 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 Azure Portal, interfejsu wiersza polecenia platformy Azure lub Azure PowerShell.

Uwaga

  • Operacja wymieniona w poprzedniej tabeli odnosi się do każdej operacji aktualizacji (PUT) wyzwolonej po stronie klienta.
  • Na platformie Kubernetes istnieje składnik w kontrolerze. Zapewnia ona rzeczywisty stan świata, w tym stan klastra i potencjalnie stany zewnętrzne, 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 wyzwolić go 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ę Sprawdzanie stanu aprowizacji. Następnie zostanie wyświetlony 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 wylicz błąd. Poniżej przedstawiono dwa typowe błędy operacji, które mogą spowodować niepowodzenie klastra:

  • Tworzenie klastra nie powiodło się
  • Uaktualnienie 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ć ten problem:

Wyświetlanie dziennika aktywności dla klastra zakończonej niepowodzeniem przy użyciu Azure Portal

Aby wyświetlić dzienniki aktywności dla klastra, który uległ awarii z Azure Portal, wykonaj następujące kroki:

  1. W 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 kategoriiStan, Przedział czasu, Zdarzenie zainicjowane przez i Zdarzenie. Na przykład możesz wybrać pozycję Niepowodzenie z listy rozwijanej Stan , aby wyświetlić tylko zdarzenia zakończone 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 zdarzenia, 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 zdarzeń. Informacje o błędzie można również znaleźć w sekcjach właściwości i danych JSON.

Wyświetlanie dziennika aktywności dla klastra zakończonej niepowodzeniem przy użyciu interfejsu wiersza polecenia platformy Azure

Jeśli wolisz używać interfejsu wiersza polecenia platformy Azure do wyświetlania dziennika aktywności dla klastra, który uległ awarii, wykonaj następujące kroki:

  1. Zainstaluj interfejs wiersza polecenia platformy Azure na 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 zawierającej 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ć --statusparametrów , --start-time, --end-time, --calleri --filter do filtrowania zdarzeń według różnych kryteriów. Można na przykład użyć polecenia --status Failed , aby wyświetlić tylko zdarzenia zakończone 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źć z 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łędzie można również znaleźć w sekcjach właściwości i danych JSON.

    Zrzut ekranu przedstawiający dane JSON.

Używanie funkcji diagnozowania i rozwiązywania problemów usługi AKS dla klastra, który uległ awarii

W 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ć do uruchomienia testów diagnostycznych i uzyskania zalecanych rozwiązań.

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ć kategorię Problemy z klastrem . Jeśli zostaną wykryte jakiekolwiek problemy, zostanie wyświetlona lista możliwych rozwiązań, które można zastosować, 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 powoduje, że maszyna wirtualna węzła jest 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, który obsługuje 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ą prawidłowe przydzielanie lub konfigurowanie maszyny wirtualnej.

Aby rozwiązać ten problem, wykonaj następujące kroki:

  1. Sprawdź stan puli węzłów przy użyciu az aks nodepool show polecenia . Jeśli stan aprowizacji to Failed, w danych wyjściowych zostanie wyświetlony komunikat o błędzie i kod.
  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, w danych wyjściowych zostanie wyświetlony komunikat o błędzie i kod.
  3. Sprawdź stan poszczególnych maszyn wirtualnych w puli węzłów przy użyciu az vmss list-instances polecenia lub az vm list . Jeśli dowolna maszyna wirtualna Failed jest w stanie lub Unhealthy , w danych wyjściowych zostanie wyświetlony komunikat o błędzie i kod.
  4. Sprawdź dziennik aktywności i ustawienie diagnostyczne zestawu skalowania maszyn wirtualnych lub zestawu dostępności, aby sprawdzić, czy są jakieś zdarzenia lub alerty wskazujące przyczynę awarii. Aby uzyskać dostęp do dziennika aktywności i ustawienia diagnostycznego, możesz użyć interfejsu api 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órych wdrożono pulę węzłów. Możesz użyć az vm list-usage polecenia lub Azure Portal, aby sprawdzić limit przydziału i pojemność. Jeśli limit przydziału lub pojemności zostanie osiągnięty, 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 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 Azure Portal.
  7. Sprawdź blokady zasobów puli węzłów. Możesz użyć az lock polecenia lub Azure Portal, aby sprawdzić poziom blokady, zakres i notatki. W razie potrzeby można również usunąć lub zaktualizować blokadę.

Inne narzędzia do rejestrowania i diagnostyki

Jeśli poprzednie metody rozwiązywania problemów nie rozwiążą problemu, możesz użyć następujących narzędzi do 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 kontenerów, dzienników kubelet i dzienników diagnostycznych rozruchu węzła.

  • Peryskop 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ę testów klastrów usługi AKS i węzłów oraz zawiera 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 klastra. 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 platformy Azure.