Problembehandlung bei der AKS-Engine in Azure Stack Hub
Möglicherweise finden Sie ein Problem beim Bereitstellen oder Arbeiten mit der AKS-Engine in Azure Stack Hub. In diesem Artikel werden die Schritte zur Problembehandlung bei der Bereitstellung der AKS-Engine erläutert. Sammeln Sie Informationen zu Ihrer AKS-Engine, erfassen Sie Kubernetes-Protokolle, und überprüfen Sie Fehlercodes für benutzerdefinierte Skripterweiterungen. Sie können auch ein GitHub-Problem für die AKS-Engine öffnen.
Hinweis
Für AKSe Version 0.75.3 und höher beginnen die aks-engine
folgenden Befehle mit aks-engine-azurestack
statt aks-engine
.
Problembehandlung bei der Installation der AKS-Engine
Wenn bei Den vorherigen Installationsschritten ein Fehler aufgetreten ist, können Sie die AKS-Engine mithilfe des GoFish-Paket-Managers installieren. GoFish ist nach eigener Darstellung ein plattformübergreifendes Homebrew.
Anweisungen zur Verwendung von GoFish zum Installieren der AKS-Engine finden Sie hier.
Sammeln von Knoten- und Clusterprotokollen
Anweisungen zum Sammeln von Knoten- und Clusterprotokollen finden Sie unter Abrufen von Knoten- und Clusterprotokollen.
Voraussetzungen
In diesem Leitfaden wird davon ausgegangen, dass Sie die Azure CLI und die AKS-Engine bereits heruntergeladen haben.
In diesem Leitfaden wird auch davon ausgegangen, dass Sie einen Cluster mithilfe der AKS-Engine bereitgestellt haben. Weitere Informationen finden Sie unter Bereitstellen eines Kubernetes-Clusters mit AKS-Engine in Azure Stack Hub .
Abrufen von Protokollen
Der Befehl aks-engine get-logs
kann beim Beheben von Problemen mit Ihrem Cluster hilfreich sein. Mit dem Befehl werden verschiedene Dateien erzeugt, gesammelt und auf Ihre Arbeitsstation heruntergeladen. Die Dateien umfassen die Knotenkonfiguration, den Clusterstatus und die Clusterkonfiguration sowie das Einrichten von Protokolldateien.
Allgemein gilt: Mit dem Befehl wird eine SSH-Sitzung für jeden Knoten erstellt, ein Protokollsammlungsskript ausgeführt, das relevante Dateien sammelt und komprimiert, und die ZIP-Datei auf Ihren lokalen Computer heruntergeladen.
SSH-Authentifizierung
Sie benötigen einen gültigen privaten SSH-Schlüssel, um eine SSH-Sitzung mit den Linux-Clusterknoten zu erstellen. Windows-Anmeldeinformationen werden im API-Modell gespeichert und daraus geladen. Legen Sie windowsprofile.sshEnabled
auf TRUE fest, um SSH in Ihren Windows-Knoten zu aktivieren.
Hochladen von Protokollen in einen Speicherkontocontainer
Nachdem die Clusterprotokolle erfolgreich abgerufen wurden, kann die AKS-Engine sie in einem Azure Storage-Kontocontainer speichern, wenn der optionale Parameter --upload-sas-url
festgelegt wird. Die AKS-Engine erwartet, dass der Containername Teil der bereitgestellten SAS-URL ist. Erwartetes Format: https://{blob-service-uri}/{container-name}?{sas-token}
Hinweis
Speicherkonten in benutzerdefinierten Clouds, die den AD FS-Identitätsanbieter verwenden, werden noch nicht unterstützt.
Knoten, die dem Cluster nicht beitreten können
Standardmäßig sammelt aks-engine get-logs
Protokolle von Knoten, die dem Cluster erfolgreich beigetreten sind. Legen Sie das Flag --vm-names
fest, um Protokolle von virtuellen Computern zu sammeln, die dem Cluster nicht beitreten konnten.
--vm-name k8s-pool-01,k8s-pool-02
Nutzung von „aks-engine get-logs“
Wenn Sie einen Cluster bereitgestellt haben und das API-Modell, das ursprünglich für die Bereitstellung dieses Clusters verwendet wurde, unter _output/<dnsPrefix>/apimodel.json
gespeichert ist, können Sie etwa mithilfe des folgenden Befehls Protokolle sammeln:
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
Parameter
Parameter | Erforderlich | Beschreibung |
---|---|---|
--location | Ja | Azure-Standort der Ressourcengruppe des Clusters |
--api-model | Ja | Pfad zum generierten API-Modell für den Cluster |
--ssh-host | Ja | Vollqualifizierter Domänenname (Fully Qualified Domain Name, FQDN) oder IP-Adresse eines SSH-Listeners, der alle Knoten im Cluster erreichen kann |
--linux-ssh-private-key | Ja | Pfad zu einem privaten SSH-Schlüssel, der zum Erstellen einer Remotesitzung in den Linux-Clusterknoten verwendet werden kann |
--output-directory | Nein | Ausgabeverzeichnis, abgeleitet von --api-model , wenn es fehlt |
--control-plane-only | Nein | Sammeln Sie nur Protokolle von Knoten der Steuerungsebene. |
--vm-names | Nein | Sammeln Sie nur Protokolle von den angegebenen VMs (durch Komma getrennte Namen). |
--upload-sas-url | Nein | SAS-URL des Azure-Speicherkontos zum Hochladen der gesammelten Protokolle |
Überprüfen der Fehlercodes für die benutzerdefinierte Skripterweiterung
Die AKS-Engine erzeugt ein Skript für jede Ubuntu Server-Instanz als Ressource für die benutzerdefinierte Skripterweiterung (Custom Script Extension, CSE), um Bereitstellungsaufgaben auszuführen. Wenn das Skript einen Fehler auslöst, wird dieser in /var/log/azure/cluster-provision.log
protokolliert. Die Fehler werden im Portal angezeigt. Der Fehlercode kann bei der Ermittlung der Fehlerursache hilfreich sein. Weitere Informationen zu den CSE-Exitcodes finden Sie unter cse_helpers.sh
.
Bereitstellen von Kubernetes-Protokollen für einen Microsoft-Supporttechniker
Wenn Sie das Problem nach dem Erfassen und Durchsehen von Protokollen immer noch nicht beheben können, empfiehlt es sich, den Prozess zum Erstellen eines Supporttickets zu starten und die erfassten Protokolle zu übermitteln.
Ihr Operator kann die von Ihnen erstellten Protokolle mit anderen Systemprotokollen kombinieren, die möglicherweise vom Microsoft-Support benötigt werden. Der Operator kann sie Microsoft zur Verfügung stellen.
Sie können Kubernetes-Protokolle auf verschiedene Arten bereitstellen:
- Sie können sich an Ihren Azure Stack Hub-Operator wenden. Ihr Operator verwendet die Informationen aus den in der ZIP-Datei gespeicherten Protokollen, um den Supportfall zu erstellen.
- Wenn Sie über die SAS-URL für ein Speicherkonto verfügen, in das Sie Ihre Kubernetes-Protokolle hochladen können, können Sie den folgenden Befehl und das Flag mit der SAS-URL hinzufügen, um die Protokolle im Speicherkonto zu speichern:
Entsprechende Anweisungen finden Sie unter Hochladen von Protokollen in einen Speicherkontocontainer.aks-engine get-logs -upload-sas-url <SAS-URL>
- Als Cloudbetreiber haben Sie folgende Möglichkeiten:
- Verwenden Sie das Blatt Hilfe + Support im Azure Stack Hub-Verwaltungsportal, um Protokolle hochzuladen. Anweisungen finden Sie unter Sofortiges Senden von Protokollen mit dem Administratorportal.
- Verwenden Sie das PowerShell-Cmdlet Get-AzureStackLog mit dem privilegierten Endpunkt (PEP). Anweisungen finden Sie unter Sofortiges Senden von Protokollen mit PowerShell.
Öffnen von GitHub-Problemen
Wenn Sie den Bereitstellungsfehler nicht beheben können, können Sie ein GitHub-Problem öffnen.
Öffnen Sie ein GitHub-Problem im AKS-Engine-Repository.
Fügen Sie einen Titel im folgenden Format hinzu: CSE-Fehler:
exit code <INSERT_YOUR_EXIT_CODE>
.Beziehen Sie folgende Informationen in das Problem ein:
Die zum Bereitstellen des Clusters verwendete Clusterkonfigurationsdatei
apimodel.json
. Entfernen Sie alle Geheimnisse und Schlüssel, bevor Sie sie auf GitHub veröffentlichen.Die Ausgabe des folgenden kubectl-Befehls
get nodes
.Der Inhalt von
/var/log/azure/cluster-provision.log
eines fehlerhaften Knotens
Nächste Schritte
- Informieren Sie sich über die AKS-Engine in Azure Stack Hub.