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

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 eller SchedulingDisabled -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:

  1. I Azure Portal söker du efter och väljer Princip.

  2. I navigeringsfönstret Princip letar du upp avsnittet Redigering och väljer sedan Tilldelningar.

  3. Leta upp den rad som innehåller tilldelningsnamnet som du vill ändra i tabellen med tilldelningar och välj sedan namnet på tilldelningen.

  4. På sidan för principtilldelning för den tilldelningen väljer du Redigera tilldelning.

  5. Välj fliken Parametrar .

  6. Avmarkera alternativet Visa endast parametrar som behöver indata eller granskning .

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