Risolvere gli errori "az aks command invoke"
Questo articolo descrive come risolvere gli errori az aks command invoke nell'interfaccia della riga di comando di Microsoft Azure in modo che sia possibile connettersi correttamente a qualsiasi cluster servizio Azure Kubernetes (servizio Azure Kubernetes), in particolare a un cluster del servizio Azure Kubernetes privato.
Altri metodi di connessione devono usare componenti di configurazione aggiuntivi, come illustrato nella tabella seguente.
Metodi di connessione | Componente di configurazione aggiuntivo |
---|---|
Rete virtuale | Rete privata virtuale (VPN) |
Rete con peering | Azure ExpressRoute |
Endpoint privato | Jumpbox |
Il az aks command invoke
comando dell'interfaccia della riga di comando di Azure è un modo alternativo per connettersi a un cluster che non richiede componenti di configurazione aggiuntivi.
Quando si esegue il comando, l'interfaccia della az aks command invoke
riga di comando di Azure crea automaticamente un command-<ID>
pod nello aks-command
spazio dei nomi per accedere al cluster del servizio Azure Kubernetes e recuperare le informazioni necessarie.
Prerequisiti
Strumento Kubernetes kubectl . Per installare kubectl usando l'interfaccia della riga di comando di Azure, eseguire il comando az aks install-cli .
Sintomi
Nella tabella seguente sono elencati i messaggi di errore comuni az aks command invoke
. Ogni messaggio di errore include un collegamento alla sezione che descrive il motivo per cui si verifica l'errore e come risolverlo.
Messaggio di errore | Collegamento |
---|---|
L'operazione ha restituito uno stato non valido 'Non trovato' | Causa 1: il pod non può essere creato a causa di vincoli di nodo o risorsa |
Impossibile eseguire il comando nel cluster gestito a causa di un errore di kubernetes. details: il webhook di ammissione "validation.gatekeeper.sh" ha negato la richiesta: <policy-specific-message> | Causa 2: Criteri di Azure non consente la creazione del pod |
Errore dal server (non consentito): gli spazi dei nomi non sono consentiti: l'utente "<ID>" non può elencare la risorsa "<risorsa>" nel gruppo DI API "" nell'ambito del cluster | Causa 3: i ruoli obbligatori non vengono concessi |
Impossibile connettersi all'identità del servizio gestito. Assicurarsi che l'identità del servizio gestito sia configurata correttamente. Ottenere la richiesta token restituita: risposta [400]; |
Causa 4: Si è verificato un problema di Cloud Shell |
Causa 1: il pod non può essere creato a causa di vincoli di nodo o risorsa
L'operazione restituisce uno Not Found
stato perché il command-<ID>
pod non riesce a raggiungere uno stato corretto, ad Running
esempio . In molti casi, il pod rimane nello Pending
stato . In questo caso, i nodi non sono in grado di pianificare il pod. Questo scenario può avere cause diverse, ad esempio le cause seguenti:
- Vincoli di risorsa
- Nodi con
NotReady
stato oSchedulingDisabled
- Nodi con taints che il pod non può tollerare
- Altre cause
Soluzione 1: modificare la configurazione in modo che sia possibile pianificare ed eseguire il pod
Assicurarsi che il command-<ID>
pod possa essere pianificato ed eseguito.
Causa 2: Criteri di Azure non consente la creazione del pod
Se sono presenti criteri di Azure specifici, il az aks command invoke
comando può avere esito negativo a causa di una configurazione non consentita nel command-<ID>
pod. Ad esempio, è possibile che siano presenti criteri di Azure che richiedono un file system radice di sola lettura o un'altra configurazione specifica.
Soluzione 2: Escludere lo spazio dei nomi per i criteri che impediscono la creazione di pod
È consigliabile esentare lo aks-command
spazio dei nomi per i criteri di Azure associati che non consentono la creazione del pod. Per altre informazioni sull'esenzione, vedere Informazioni sull'ambito in Criteri di Azure
Per esentare un Criteri di Azure:
Nel portale di Azure cercare e selezionare Criteri.
Nel riquadro di spostamento Criteri individuare la sezione Creazione e quindi selezionare Assegnazioni.
Nella tabella delle assegnazioni trovare la riga che contiene il nome dell'assegnazione che si desidera modificare e quindi selezionare il nome dell'assegnazione.
Nella pagina di assegnazione dei criteri per l'assegnazione selezionare Modifica assegnazione.
Selezionare la scheda Parametri .
Deselezionare l'opzione Mostra solo i parametri che richiedono input o revisione .
Nella casella Esclusioni dello spazio dei nomi aggiungere lo spazio dei nomi aks-command all'elenco di spazi dei nomi da escludere.
In alternativa, se il criterio non è un criterio predefinito, è possibile controllare la configurazione del command-<ID>
pod e modificare i criteri in base alle esigenze. Per esplorare la configurazione YAML del pod, eseguire il comando seguente:
kubectl get pods command-<ID> --namespace aks-command --output yaml
Causa 3: i ruoli obbligatori non vengono concessi
Per usare il az aks command invoke
comando , è necessario avere accesso ai ruoli seguenti nel cluster:
Microsoft.ContainerService/managedClusters/runCommand/action
Microsoft.ContainerService/managedClusters/commandResults/read
Se non si dispone di questi ruoli, il az aks command invoke
comando non può recuperare le informazioni necessarie.
Soluzione 3: Aggiungere i ruoli necessari
Aggiungere i Microsoft.ContainerService/managedClusters/runCommand/action
ruoli e Microsoft.ContainerService/managedClusters/commandResults/read
.
Causa 4: Si è verificato un problema di Cloud Shell
Il az aks command invoke
comando non viene elaborato come previsto quando viene eseguito direttamente nell'ambiente azure Cloud Shell. Si tratta di un problema noto in Cloud Shell.
Soluzione 4a: eseguire prima il comando az login
In Cloud Shell eseguire il comando az login prima di eseguire az aks command invoke
.
Soluzione 4b: eseguire il comando in un computer locale o in una macchina virtuale
Eseguire il az aks command invoke
comando in un computer locale o in qualsiasi macchina virtuale (VM) in cui è installata l'interfaccia della riga di comando di Azure.
Dichiarazione di non responsabilità sulle informazioni di terze parti
I prodotti di terzi citati in questo articolo sono prodotti da società indipendenti da Microsoft. Microsoft non rilascia alcuna garanzia implicita o esplicita relativa alle prestazioni o all'affidabilità di tali prodotti
Contattaci per ricevere assistenza
In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.