Dela via


Felsöka AKS-motorn på Azure Stack Hub

Du kan få problem när du distribuerar eller arbetar med AKS-motorn på Azure Stack Hub. Den här artikeln beskriver stegen för att felsöka distributionen av AKS-motorn. Samla in information om AKS-motorn, samla in Kubernetes-loggar och granska felkoder för anpassade skripttillägg. Du kan också öppna ett GitHub-problem för AKS-motorn.

Anteckning

För AKSe version 0.75.3 och senare aks-engine börjar kommandona nedan med aks-engine-azurestack i stället aks-engineför .

Felsöka installationen av AKS-motorn

Om dina tidigare installationssteg misslyckades kan du installera AKS-motorn med hjälp av GoFish-pakethanteraren. GoFish beskriver sig själv som en plattformsoberoende Homebrew.

Du hittar anvisningar för hur du använder GoFish för att installera AKS-motorn här.

Samla in nod- och klusterloggar

Du hittar anvisningarna för att samla in nod- och klusterloggar i Hämta nod- och klusterloggar.

Förutsättningar

Den här guiden förutsätter att du redan har laddat ned Azure CLI och AKS-motorn.

Den här guiden förutsätter också att du har distribuerat ett kluster med hjälp av AKS-motorn. Mer information finns i Distribuera ett Kubernetes-kluster med AKS-motorn på Azure Stack Hub .

Hämta loggar

Kommandot aks-engine get-logs kan vara användbart för att felsöka problem med klustret. Kommandot skapar, samlar in och laddar ned en uppsättning filer till din arbetsstation. Filerna omfattar nodkonfiguration, klustertillstånd och konfiguration samt konfiguration av loggfiler.

På hög nivå: kommandot fungerar genom att upprätta en SSH-session i varje nod, köra ett loggsamlingsskript som samlar in och zippar relevanta filer och ladda ned .ZIP-filen till den lokala datorn.

SSH-autentisering

Du behöver en giltig privat SSH-nyckel för att upprätta en SSH-session till klustrets Linux-noder. Windows-autentiseringsuppgifter lagras i API-modellen och läses in därifrån. Ställ in windowsprofile.sshEnabled på true för att aktivera SSH i dina Windows-noder.

Ladda upp loggar till en lagringskontocontainer

När klusterloggarna har hämtats kan AKS Engine spara dem på en Azure Storage-kontocontainer om valfri parameter --upload-sas-url har angetts. AKS Engine förväntar sig att containernamnet ska ingå i den tillhandahållna SAS-URL:en. Det förväntade formatet är https://{blob-service-uri}/{container-name}?{sas-token}.

Anteckning

Lagringskonton i anpassade moln som använder AD FS-identitetsprovidern stöds inte ännu.

Noder kan inte ansluta till klustret

Samlar som standard aks-engine get-logs in loggar från noder som har anslutit till klustret. Om du vill samla in loggar från virtuella datorer som inte kunde ansluta till klustret anger du flaggan --vm-names:

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

Användning för aks-engine get-logs

Förutsatt att du har ett distribuerat kluster och den API-modell som ursprungligen användes för att distribuera klustret lagras på _output/<dnsPrefix>/apimodel.jsonkan du samla in loggar som kör ett kommando som:

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

Parametrar

Parameter Obligatoriskt Beskrivning
--Plats Ja Azure-platsen för klustrets resursgrupp.
--api-model Ja Sökväg till den genererade API-modellen för klustret.
--ssh-host Ja FQDN, eller IP-adress, för en SSH-lyssnare som kan nå alla noder i klustret.
--linux-ssh-private-key Ja Sökväg till en privat SSH-nyckel som kan användas för att skapa en fjärrsession på klustrets Linux-noder.
--output-directory Inga Utdatakatalog, härledd från --api-model om den saknas.
--control-plane-only Inga Samla endast in loggar från kontrollplansnoder.
--vm-names Inga Samla endast in loggar från de angivna virtuella datorerna (kommaavgränsade namn).
--upload-sas-url Inga SAS-URL för Azure Storage-konto för att ladda upp de insamlade loggarna.

Granska felkoder för anpassat skripttillägg

AKS-motorn skapar ett skript för varje Ubuntu Server som en resurs för det anpassade skripttillägget (CSE) för att utföra distributionsuppgifter. Om skriptet genererar ett fel loggas ett fel i /var/log/azure/cluster-provision.log. Felen visas i portalen. Felkoden kan vara till hjälp när du ska ta reda på problemet. Mer information om CSE-slutkoderna finns i cse_helpers.sh.

Tillhandahålla Kubernetes-loggar till en Microsoft-supporttekniker

Om du fortfarande inte kan lösa problemet efter att ha samlat in och undersökt loggar kan du börja skapa ett supportärende och ange loggarna som du har samlat in.

Din operatör kan kombinera loggarna som du har skapat tillsammans med andra systemloggar som kan behövas av Microsofts support. Operatören kan göra dem tillgängliga för Microsoft.

Du kan ange Kubernetes-loggar på flera olika sätt:

  • Du kan kontakta din Azure Stack Hub-operatör. Operatören använder informationen från loggarna som lagras i .ZIP-filen för att skapa supportäredet.
  • Om du har SAS-URL:en för ett lagringskonto där du kan ladda upp Dina Kubernetes-loggar kan du inkludera följande kommando och flagga med SAS-URL:en för att spara loggarna till lagringskontot:
    aks-engine get-logs -upload-sas-url <SAS-URL>
    
    Anvisningar finns i Ladda upp loggar till en lagringskontocontainer.
  • Om du är molnoperatör kan du:

Öppna GitHub-problem

Om du inte kan lösa distributionsfelet kan du öppna ett GitHub-problem.

  1. Öppna ett GitHub-problem i AKS-motorns lagringsplats.

  2. Lägg till en rubrik med följande format: CSE-fel: exit code <INSERT_YOUR_EXIT_CODE>.

  3. Ta med följande information i problemet:

    • Klusterkonfigurationsfilen, apimodel.json, som används för att distribuera klustret. Ta bort alla hemligheter och nycklar innan du publicerar dem på GitHub.

    • Utdata från följande kubectl-kommandoget nodes.

    • Innehållet i /var/log/azure/cluster-provision.log från en nod med feltillstånd.

Nästa steg