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.log
pliku . 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:
Aby uzyskać instrukcje, zobacz Przekazywanie dzienników do kontenera konta magazynu.aks-engine get-logs -upload-sas-url <SAS-URL>
- Jeśli jesteś operatorem chmury, możesz:
- Użyj bloku Pomoc i obsługa techniczna w portalu administracyjnym usługi Azure Stack Hub, aby przekazać dzienniki. Aby uzyskać instrukcje, zobacz Wysyłanie dzienników teraz za pomocą portalu administratora.
- Użyj polecenia cmdlet Get-AzureStackLog programu PowerShell przy użyciu uprzywilejowanego punktu końcowego (PEP) Aby uzyskać instrukcje, zobacz Wysyłanie dzienników teraz przy użyciu programu PowerShell.
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.
Otwórz problem z usługą GitHub w repozytorium aparatu usługi AKS.
Dodaj tytuł przy użyciu następującego formatu: błąd CSE:
exit code <INSERT_YOUR_EXIT_CODE>
.Dołącz następujące informacje w problemie:
Plik konfiguracji klastra ,
apimodel.json
uż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 nodes
kubectl .Zawartość węzła
/var/log/azure/cluster-provision.log
w złej kondycji.
Następne kroki
- Przeczytaj o aks engine w usłudze Azure Stack Hub.