Udostępnij za pośrednictwem


Rozwiązywanie problemów z aparatem usługi AKS w usłudze Azure Stack Hub

Podczas wdrażania lub pracy z aparatem usługi AKS w usłudze Azure Stack Hub może wystąpić problem. W tym artykule przedstawiono kroki rozwiązywania problemów z wdrożeniem aparatu AKS. Zbierz informacje o aks engine, zbierz dzienniki kubernetes i przejrzyj niestandardowe kody błędów rozszerzenia skryptu. Możesz również otworzyć problem z usługą GitHub dla aparatu usługi AKS.

Uwaga

W przypadku usługi AKSe w wersji 0.75.3 lub nowszej aks-engine poniższe polecenia zaczynają się aks-engine-azurestack od, a nie aks-engine.

Rozwiązywanie problemów z instalacją aparatu usługi AKS

Jeśli poprzednie kroki instalacji nie powiodły się, możesz zainstalować aparat AKS przy użyciu menedżera pakietów GoFish. GoFish opisuje się jako wieloplatformowy Homebrew.

Instrukcje dotyczące używania narzędzia GoFish do zainstalowania aparatu AKS można znaleźć tutaj.

Zbieranie dzienników węzłów i klastrów

Instrukcje dotyczące zbierania dzienników węzłów i klastrów można znaleźć w temacie Pobieranie dzienników węzłów i klastrów.

Wymagania wstępne

W tym przewodniku założono, że interfejs wiersza polecenia platformy Azure i aparat usługi AKS został już pobrany.

W tym przewodniku założono również, że klaster został wdrożony przy użyciu aparatu usługi AKS. Aby uzyskać więcej informacji, zobacz Deploy a Kubernetes cluster with AKS engine on Azure Stack Hub (Wdrażanie klastra Kubernetes za pomocą aparatu AKS w usłudze Azure Stack Hub ).

Pobieranie dzienników

Polecenie aks-engine get-logs może być przydatne do rozwiązywania problemów z klastrem. Polecenie tworzy, zbiera i pobiera zestaw plików do stacji roboczej. Pliki obejmują konfigurację węzła, stan i konfigurację klastra oraz konfigurowanie plików dziennika.

Na wysokim poziomie: polecenie działa przez ustanowienie sesji SSH w każdym węźle, wykonanie skryptu zbierania dzienników, który zbiera i zipuje odpowiednie pliki, a następnie pobiera plik .ZIP na komputer lokalny.

Uwierzytelnianie SSH

Aby ustanowić sesję SSH w węzłach systemu Linux klastra, potrzebny będzie prawidłowy klucz prywatny SSH. Poświadczenia systemu Windows są przechowywane w modelu interfejsu API i zostaną tam załadowane. Ustaw windowsprofile.sshEnabled wartość true, aby włączyć protokół SSH w węzłach systemu Windows.

Przekazywanie dzienników do kontenera konta magazynu

Po pomyślnym pobraniu dzienników klastra aparat usługi AKS może je zapisać w kontenerze konta usługi Azure Storage, jeśli zostanie ustawiony opcjonalny parametr --upload-sas-url . Aparat usługi AKS oczekuje, że nazwa kontenera będzie częścią podanego adresu URL sygnatury dostępu współdzielonego. Oczekiwany format to https://{blob-service-uri}/{container-name}?{sas-token}.

Uwaga

Konta magazynu w chmurach niestandardowych przy użyciu dostawcy tożsamości usług AD FS nie są jeszcze obsługiwane.

Węzły nie mogą dołączyć do klastra

Domyślnie aks-engine get-logs zbiera dzienniki z węzłów, które pomyślnie dołączyły do klastra. Aby zebrać dzienniki z maszyn wirtualnych, które nie były w stanie dołączyć do klastra, ustaw flagę --vm-names:

--vm-name k8s-pool-01,k8s-pool-02

Użycie polecenia aks-engine get-logs

Zakładając, że masz wdrożony klaster, a model interfejsu API pierwotnie używany do wdrażania tego klastra jest przechowywany w lokalizacji _output/<dnsPrefix>/apimodel.json, możesz zbierać dzienniki z uruchomionym poleceniem, takim jak:

aks-engine get-logs \
    --location <location> \
    --api-model _output/<dnsPrefix>/apimodel.json \
    --ssh-host <dnsPrefix>.<location>.cloudapp.azure.com \
    --linux-ssh-private-key ~/.ssh/id_rsa

Parametry

Parametr Wymagane Opis
--Lokalizacji Tak Lokalizacja platformy Azure grupy zasobów klastra.
--api-model Tak Ścieżka do wygenerowanego modelu interfejsu API dla klastra.
--ssh-host Tak Nazwa FQDN lub adres IP odbiornika SSH, który może dotrzeć do wszystkich węzłów w klastrze.
--linux-ssh-private-key Tak Ścieżka do klucza prywatnego SSH, który może służyć do tworzenia sesji zdalnej w węzłach klastra z systemem Linux.
--output-directory Nie Katalog wyjściowy, pochodzący z --api-model elementu , jeśli brakuje.
--control-plane-only Nie Zbieraj tylko dzienniki z węzłów płaszczyzny sterowania.
--vm-names Nie Zbieraj tylko dzienniki z określonych maszyn wirtualnych (nazwy rozdzielane przecinkami).
--upload-sas-url Nie Adres URL sygnatury dostępu współdzielonego konta usługi Azure Storage w celu przekazania zebranych dzienników.

Przeglądanie niestandardowych kodów błędów rozszerzenia skryptu

Aparat AKS tworzy skrypt dla każdego serwera Ubuntu Jako zasób rozszerzenia niestandardowego skryptu (CSE) do wykonywania zadań wdrażania. Jeśli skrypt zgłasza błąd, rejestruje błąd w /var/log/azure/cluster-provision.logpliku . Błędy są wyświetlane w portalu. Kod błędu może być przydatny w określaniu przypadku problemu. Aby uzyskać więcej informacji na temat kodów zakończenia CSE, zobacz cse_helpers.sh.

Zapewnianie dzienników platformy Kubernetes inżynierowi pomocy technicznej firmy Microsoft

Jeśli po zebraniu i zbadaniu dzienników nadal nie możesz rozwiązać problemu, możesz rozpocząć proces tworzenia biletu pomocy technicznej i podać zebrane dzienniki.

Operator może połączyć dzienniki utworzone wraz z innymi dziennikami systemu, które mogą być potrzebne przez pomoc techniczną firmy Microsoft. Operator może udostępnić je firmie Microsoft.

Dzienniki platformy Kubernetes można podać na kilka sposobów:

  • Możesz skontaktować się z operatorem usługi Azure Stack Hub. Operator używa informacji z dzienników przechowywanych w pliku .ZIP w celu utworzenia zgłoszenia do pomocy technicznej.
  • Jeśli masz adres URL sygnatury dostępu współdzielonego dla konta magazynu, w którym można przekazać dzienniki platformy Kubernetes, możesz dołączyć następujące polecenie i flagę z adresem URL sygnatury dostępu współdzielonego, aby zapisać dzienniki na koncie magazynu:
    aks-engine get-logs -upload-sas-url <SAS-URL>
    
    Aby uzyskać instrukcje, zobacz Przekazywanie dzienników do kontenera konta magazynu.
  • Jeśli jesteś operatorem chmury, możesz:

Problemy z otwieraniem usługi GitHub

Jeśli nie możesz rozwiązać problemu z wdrożeniem, możesz otworzyć problem z usługą GitHub.

  1. Otwórz problem z usługą GitHub w repozytorium aparatu usługi AKS.

  2. Dodaj tytuł przy użyciu następującego formatu: błąd CSE: exit code <INSERT_YOUR_EXIT_CODE>.

  3. Dołącz następujące informacje w problemie:

    • Plik konfiguracji klastra , apimodel.jsonużywany do wdrożenia klastra. Usuń wszystkie wpisy tajne i klucze przed opublikowaniem go w usłudze GitHub.

    • Dane wyjściowe następującego polecenia get nodeskubectl .

    • Zawartość węzła /var/log/azure/cluster-provision.log w złej kondycji.

Następne kroki