Grundläggande felsökning av problem med att skapa AKS-kluster
Den här artikeln beskriver de grundläggande felsökningsmetoder som ska användas om du inte kan skapa eller distribuera ett AkS-kluster (Microsoft Azure Kubernetes Service).
Förutsättningar
Azure CLI (version 2.0.59 eller senare).
Kubernetes kubectl-verktyget . Om du vill installera kubectl med hjälp av Azure CLI kör du kommandot az aks install-cli .
Visa fel från Azure CLI
Om åtgärden misslyckas när du försöker skapa kluster med hjälp av Azure CLI visas felinformation i utdata. Här är ett exempel på ett Azure CLI-kommando och utdata:
# Create a cluster specifying subnet
az aks create --resource-group myResourceGroup
--name MyManagedCluster \
--load-balancer-sku standard \
--vnet-subnet-id /subscriptions/<subscriptions-id>/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/aks_demo_vnet/subnets/AKS
Exempel på utdata:
It is highly recommended to use USER assigned identity (option --assign-identity)when you want to bring you own subnet, which will have no latency for the role assignment to take effect. When you SYSTEM assigned identity, azure-cli will grant Network Contributor role to the system assigned identity after the cluster is created, and the role assignment will take some time to take effect, see https://zcusa.951200.xyz/azure/aks/use-managed-identity, proceed to create cluster with system assigned identity? (y/N): y`
(ControlPlaneAddOnsNotReady) Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj
Du kan identifiera felkoden och felmeddelandet från utdata. I det här fallet är de:
- Felkod:
ControlPlaneAddOnsNotReady
- Felmeddelande:
Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj
.
Dessa beskrivningar innehåller ofta information om vad som gick fel när klustret skapades, och de länkar till artiklar som innehåller ännu mer information. Dessutom kan du använda våra felsökningsartiklar som referens, baserat på de fel som Azure CLI-åtgärden genererar.
Visa felinformation i Azure Portal
Om du vill undersöka felen när AKS-klustret skapas i Azure Portal öppnar du aktivitetsloggen. Du kan filtrera resultaten så att de passar dina behov. Det gör du genom att välja Lägg till filter för att lägga till fler egenskaper i filtret.
På sidan Aktivitetslogg letar du upp loggposter där kolumnen Åtgärdsnamn visar Skapa eller uppdatera hanterat kluster.
Händelsen som initierades av kolumnen visar användaren som utförde åtgärden, som kan vara ett arbetskonto, ett skolkonto eller en Hanterad Azure-identitet.
Om åtgärden lyckas godkänns kolumnvärdet Status. Du ser även underoperationsposter för att skapa klusterkomponenterna, till exempel följande åtgärdsnamn:
- Skapa eller uppdatera routningstabell
- Skapa eller uppdatera nätverkssäkerhetsgrupp
- Uppdatera användartilldelad identitet Skapa
- Skapa eller uppdatera lastbalanserare
- Skapa eller uppdatera offentlig IP-adress
- Skapa rolltilldelning
- Uppdatera resursgrupp
I de här underoperationsposterna är statusvärdet Lyckades och fältet Händelse initierad av anges till AzureContainerService.
Vad händer om ett fel inträffar i stället? I så fall är statusvärdet Misslyckades. Till skillnad från i åtgärderna för att skapa klusterkomponenter måste du expandera de misslyckade underoperationsposterna för att granska dem. Typiska underoperationsnamn är principåtgärder, till exempel "granska" principåtgärd och principåtgärden "auditIfNotExists". Alla underåtgärder misslyckas inte nödvändigtvis tillsammans. Du kan förvänta dig att se några av dem lyckas.
Välj en av de misslyckade underåtgärderna för att undersöka den ytterligare. Välj flikarna Sammanfattning, JSON och Ändringshistorik för att felsöka problemet. Fliken JSON innehåller utdatatexten för felet i JSON-format, och den innehåller vanligtvis den mest användbara informationen.
Här är ett exempel på den detaljerade loggen i JSON-format:
{
"status": {
"value": "Failed",
"localizedValue": "Failed"
},
"subStatus": {
"value": "",
"localizedValue": ""
},
"submissionTimestamp": "2024-08-30T10:06:07Z",
"subscriptionId": "<subscriptionId>",
"tenantId": "<tenantId>",
"properties": {
"statusMessage": "{\"status\":\"Failed\",\"error\":{\"code\":\"ResourceOperationFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"VMExtensionProvisioningError\",\"message\":\"Unable to establish outbound connection from agents, please see https://zcusa.951200.xyz/en-us/troubleshoot/azure/azure-kubernetes/error-code-outboundconnfailvmextensionerror and https://aka.ms/aks-required-ports-and-addresses for more information.\"}]}}",
}
}
Visa klusterinsikter
Skapades klustret i Azure Portal och visas det där? Om detta är sant kan du generera klusterinsikter som hjälper dig att felsöka. Följ dessa steg för att komma åt den här funktionen:
I Azure Portal söker du efter och väljer Kubernetes-tjänster.
Välj namnet på ditt AKS-kluster.
I navigeringsfönstret på AKS-klustersidan väljer du Diagnostisera och lösa problem.
På sidan Diagnostisera och lösa problem väljer du länken Klusterinsikter . Verktyget klusterinsikter analyserar klustret och ger sedan en lista över resultaten i avsnittet Observationer och lösningar på sidan Klusterinsikter .
Välj ett av resultaten för att visa mer information om ett problem och dess möjliga lösningar.
Visa resurser i Azure Portal
I Azure Portal kanske du vill visa de resurser som skapades när klustret skapades. Vanligtvis finns dessa resurser i en resursgrupp vars namn börjar i MC_. Resursgruppen för det hanterade klustret kan ha ett namn som MC_MyResourceGroup_MyManagedCluster_location-code>.< Namnet kan dock vara annorlunda om du har skapat klustret med hjälp av en anpassad hanterad klusterresursgrupp.
Om du vill hitta resursgruppen söker du efter och väljer Resursgrupper i Azure Portal och väljer sedan den resursgrupp där klustret skapades. Resurslistan visas på sidan Översikt i resursgruppen.
Varning
Vi rekommenderar att du inte ändrar resurser i resursgruppen MC_ . Den här åtgärden kan påverka AKS-klustret negativt.
Om du vill granska statusen för en VM-skalningsuppsättning kan du välja skalningsuppsättningens namn i listan över resurser för resursgruppen. Det kan ha ett namnvärde som liknar aks-nodepool1-12345678-vmss, och det ett typvärde för VM-skalningsuppsättning. Status för skalningsuppsättningen visas överst på nodpoolens översiktssida, och mer information visas i rubriken Essentials. Om distributionen misslyckades är statusen Misslyckades.
För alla resurser kan du granska information för att få en bättre förståelse för varför distributionen misslyckades. För en skalningsuppsättning kan du välja statustexten Misslyckades för att visa information om felet. Informationen finns på en rad som innehåller kolumnerna Status, Nivå och Kod . I följande exempel visas en rad med kolumnvärden.
Column | Exempelvärde |
---|---|
Status | Etableringen misslyckades |
Nivå | Fel |
Kod | ProvisioningState/failed/VMExtensionProvisioningError |
Välj raden för att se fältet Meddelande . Detta innehåller ännu mer information om felet. Till exempel börjar fältet Meddelande för exempelraden i följande text:
Den virtuella datorn har rapporterat ett fel vid bearbetning av tillägget "vmssCSE". Felmeddelande: "Aktivera misslyckades: det gick inte att köra kommandot: kommandot avslutades med slutstatus=50 [stdout] [stderr] 0 0 0 --:
Beväpnad med den här informationen kan du dra slutsatsen att de virtuella datorerna i skalningsuppsättningen misslyckades och genererade utgångsstatus 50.
Kommentar
Om klusterdistributionen inte nådde den punkt där dessa resurser skulle ha skapats kanske du inte kan granska resursgruppen för det hanterade klustret i Azure Portal.
Använda Kubectl-kommandon
Om du vill ha ett annat alternativ för att felsöka fel i klustret använder du kubectl-kommandon för att få information om de resurser som distribuerades i klustret. Det gör du genom att först logga in på ditt AKS-kluster:
az aks get-credentials --resource-group MyResourceGroup --name MyManagedCluster
Beroende på typen av fel och när det inträffade kanske du inte kan logga in på klustret för att få mer information. Men om klustret har skapats och visas i Azure Portal bör du kunna logga in och köra kubectl-kommandon.
Visa klusternoder (kubectl get-noder)
Om du vill fastställa tillståndet för klusternoderna visar du noderna genom att kubectl get nodes
köra kommandot . I det här exemplet rapporteras inga noder i klustret:
$ kubectl get nodes
No resources found
Visa poddar i systemnamnområdet (kubectl get pods)
Att visa poddarna i kube-system-namnområdet är också ett bra sätt att felsöka problemet. Med den här metoden kan du visa status för Kubernetes-systempoddar. I det här exemplet anger kubectl get pods
vi kommandot:
$ kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-845757d86-7xjqb 0/1 Pending 0 78m
coredns-autoscaler-5f85dc856b-mxkrj 0/1 Pending 0 77m
konnectivity-agent-67f7f5554f-nsw2g 0/1 Pending 0 77m
konnectivity-agent-8686cb54fd-xlsgk 0/1 Pending 0 65m
metrics-server-6bc97b47f7-dfhbr 0/1 Pending 0 77m
Beskriv statusen för en podd (kubectl describe pod)
Genom att beskriva statusen för poddarna kan du visa konfigurationsinformationen och alla händelser som har inträffat på poddarna. kubectl describe pods
Kör kommandot:
$ kubectl describe pod coredns-845757d86-7xjqb -n kube-system
Name: coredns-845757d86-7xjqb
Namespace: kube-system
Priority: 2000001000
Priority Class Name: system-node-critical
Node: <none>
Labels: k8s-app=kube-dns
kubernetes.io/cluster-service=true
pod-template-hash=845757d86
version=v20
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 24m (x1 over 25m) default-scheduler no nodes available to schedule pods
Warning FailedScheduling 29m (x57 over 84m) default-scheduler no nodes available to schedule pods
I kommandoutdata kan du se att podden inte kan distribueras till en nod eftersom inga noder är tillgängliga.
Kontakta oss för att få hjälp
Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.