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:
    aks-engine get-logs -upload-sas-url <SAS-URL>
    
    Entsprechende Anweisungen finden Sie unter Hochladen von Protokollen in einen Speicherkontocontainer.
  • Als Cloudbetreiber haben Sie folgende Möglichkeiten:

Öffnen von GitHub-Problemen

Wenn Sie den Bereitstellungsfehler nicht beheben können, können Sie ein GitHub-Problem öffnen.

  1. Öffnen Sie ein GitHub-Problem im AKS-Engine-Repository.

  2. Fügen Sie einen Titel im folgenden Format hinzu: CSE-Fehler: exit code <INSERT_YOUR_EXIT_CODE>.

  3. 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