Lösa fel med "az aks command invoke"
Den här artikeln beskriver hur du löser az aks-kommandot anropar fel i Microsoft Azure CLI så att du kan ansluta till alla Azure Kubernetes Service -kluster (AKS), särskilt till ett privat AKS-kluster.
Andra anslutningsmetoder måste använda extra konfigurationskomponenter, som du ser i följande tabell.
Anslutningsmetoder | Extra konfigurationskomponent |
---|---|
Virtuellt nätverk | Virtuellt privat nätverk (VPN) |
Peer-kopplat nätverk | Azure ExpressRoute |
Privat slutpunkt | Jumpbox |
az aks command invoke
Azure CLI-kommandot är ett alternativt sätt att ansluta till ett kluster som inte kräver extra konfigurationskomponenter.
När du kör az aks command invoke
kommandot skapar Azure CLI automatiskt en command-<ID>
podd i aks-command
namnområdet för att få åtkomst till AKS-klustret och hämta nödvändig information.
Förutsättningar
Kubernetes kubectl-verktyget . Om du vill installera kubectl med hjälp av Azure CLI kör du kommandot az aks install-cli .
Symptom
I följande tabell visas vanliga az aks command invoke
felmeddelanden. Varje felmeddelande har en länk till avsnittet som beskriver varför felet inträffar och hur du åtgärdar det.
Felmeddelande | Länk |
---|---|
Åtgärden returnerade en ogiltig status "Hittades inte" | Orsak 1: Podden kan inte skapas på grund av nod- eller resursbegränsningar |
Det gick inte att köra kommandot i det hanterade klustret på grund av kubernetes-fel. information: antagningswebbhooken "validation.gatekeeper.sh" nekade begäran: <principspecifikt meddelande> | Orsak 2: Azure Policy tillåter inte att podden skapas |
Fel från server (förbjudet): namnområden är förbjudna: Användar-ID<>:t kan inte visa resursen "<resurs>" i API-gruppen "" i klusteromfånget | Orsak 3: Obligatoriska roller beviljas inte |
Det gick inte att ansluta till MSI. Kontrollera att MSI är korrekt konfigurerat. Hämta tokenbegäran returnerad: Svar [400]; |
Orsak 4: Det finns ett Cloud Shell problem |
Orsak 1: Podden kan inte skapas på grund av nod- eller resursbegränsningar
Åtgärden returnerar en Not Found
status eftersom command-<ID>
podden inte kan nå ett lyckat tillstånd, till exempel Running
. (I många fall förblir podden i tillståndet Pending
.) I det här fallet kan noderna inte schemalägga podden. Det här scenariot kan ha olika orsaker, till exempel följande orsaker:
- Resursbegränsningar
- Noder som har ett
NotReady
ellerSchedulingDisabled
-tillstånd - Noder som har taints som podden inte kan tolerera
- Andra orsaker
Lösning 1: Ändra konfigurationen så att du kan schemalägga och köra podden
Kontrollera att podden command-<ID>
kan schemaläggas och köras.
Orsak 2: Azure Policy tillåter inte att podden skapas
Om du har specifika Azure-principer az aks command invoke
kan kommandot misslyckas på grund av en otillåten command-<ID>
konfiguration i podden. Du kan till exempel ha en Azure-princip som kräver ett skrivskyddat rotfilsystem eller någon annan specifik konfiguration.
Lösning 2: Undanta namnområdet för principer som förbjuder skapande av poddar
Vi rekommenderar att du undantar aks-command
namnområdet för associerade Azure-principer som inte tillåter att podden skapas. Mer information om undantag finns i Förstå omfång i Azure Policy
Så här undantar du en Azure Policy:
I Azure Portal söker du efter och väljer Princip.
I navigeringsfönstret Princip letar du upp avsnittet Redigering och väljer sedan Tilldelningar.
Leta upp den rad som innehåller tilldelningsnamnet som du vill ändra i tabellen med tilldelningar och välj sedan namnet på tilldelningen.
På sidan för principtilldelning för den tilldelningen väljer du Redigera tilldelning.
Välj fliken Parametrar .
Avmarkera alternativet Visa endast parametrar som behöver indata eller granskning .
I rutan Namnområdesundantag lägger du till namnområdet aks-command i listan över namnområden som ska undantas.
Om principen inte är en inbyggd princip kan du också kontrollera poddens command-<ID>
konfiguration och justera principen efter behov. Om du vill utforska poddens YAML-konfiguration kör du följande kommando:
kubectl get pods command-<ID> --namespace aks-command --output yaml
Orsak 3: Obligatoriska roller beviljas inte
Om du vill använda az aks command invoke
kommandot måste du ha åtkomst till följande roller i klustret:
Microsoft.ContainerService/managedClusters/runCommand/action
Microsoft.ContainerService/managedClusters/commandResults/read
Om du inte har dessa roller az aks command invoke
kan kommandot inte hämta den information som krävs.
Lösning 3: Lägg till de roller som krävs
Lägg till rollerna Microsoft.ContainerService/managedClusters/runCommand/action
och Microsoft.ContainerService/managedClusters/commandResults/read
.
Orsak 4: Det finns ett Cloud Shell problem
Kommandot az aks command invoke
bearbetas inte som förväntat när det körs direkt i Azure Cloud Shell-miljön. Det här är ett känt problem i Cloud Shell.
Lösning 4a: Kör kommandot az login först
Kör kommandot az login i Cloud Shell innan du kör az aks command invoke
.
Lösning 4b: Kör kommandot på en lokal dator eller en virtuell dator
az aks command invoke
Kör kommandot på en lokal dator eller en virtuell dator (VM) som har Azure CLI installerat.
Ansvarsfriskrivning för information från tredje part
De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.
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.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för