Accedere a un cluster del servizio Azure Kubernetes servizio Azure Kubernetes privato usando la funzionalità di comando invoke o Esegui comando
Quando si accede a un cluster del servizio Azure Kubernetes privato, è necessario connettersi al cluster dalla rete virtuale del cluster, da una rete con peering o da un endpoint privato configurato. Questi approcci richiedono la configurazione di una VPN, ExpressRoute, la distribuzione di un jumpbox all'interno della rete virtuale del cluster o la creazione di un endpoint privato all'interno di un'altra rete virtuale.
Con l'interfaccia della riga di comando di Azure è possibile usare command invoke
per accedere ai cluster privati senza la necessità di configurare una VPN o ExpressRoute. command invoke
consente di richiamare in remoto i comandi, ad esempio kubectl
e helm
, nel cluster privato tramite l'API di Azure senza connettersi direttamente al cluster. Le azioni Microsoft.ContainerService/managedClusters/runcommand/action
e Microsoft.ContainerService/managedclusters/commandResults/read
controllano le autorizzazioni per l'uso di command invoke
.
Con il portale di Azure è possibile usare la funzionalità Run command
per eseguire i comandi nel cluster privato. La funzionalità Run command
usa la stessa funzionalità command invoke
per eseguire comandi nel cluster.
Il pod creato da Run command
fornisce kubectl
e helm
per il funzionamento del cluster. jq
grep
, xargs
, e awk
sono disponibili per il supporto di Bash.
Operazioni preliminari
Prima di iniziare, verificare di aver soddisfatto le risorse e i prerequisiti seguenti:
- Un cluster privato esistente. Se non è disponibile, vedere Creare un cluster del servizio Azure Kubernetes privato.
- Interfaccia della riga di comando di Azure versione 2.24.0 o successiva. Eseguire
az --version
per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure. - Accesso ai ruoli
Microsoft.ContainerService/managedClusters/runcommand/action
eMicrosoft.ContainerService/managedclusters/commandResults/read
nel cluster.
Limiti
Questa funzionalità è progettata per semplificare l'accesso al cluster e non è progettata per l'accesso a livello di codice. Se si dispone di un programma che richiama Kubernetes usando Run command
, si applicano gli svantaggi seguenti:
- Si ottiene solo exitCode e output di testo e si perdono i dettagli del livello API.
- Un hop aggiuntivo introduce punti di errore aggiuntivi.
Il pod creato da Run command
è hardcoded con una 200m CPU
richiesta e 500Mi memory
e un 500m CPU
limite.1Gi memory
In rari casi in cui tutto il nodo è compresso, il pod non può essere pianificato entro la limitazione dell'API ARM di 60 secondi. Ciò significa che l'oggetto Run command
ha esito negativo, anche se è configurato per la scalabilità automatica.
command invoke
esegue i comandi dal cluster, pertanto tutti i comandi eseguiti in questo modo sono soggetti alle restrizioni di rete configurate e a eventuali altre restrizioni configurate. Verificare che nel cluster siano presenti sufficienti nodi e risorse per pianificare questo pod di comando.
Nota
L'output per command invoke
è limitato a 512 KB di dimensioni.
Eseguire comandi nel cluster del servizio Azure Kubernetes
Usare command invoke
per eseguire un comando singolo
Eseguire un comando nel cluster usando il comando
az aks command invoke --command
. Il comando di esempio seguente esegue il comandokubectl get pods -n kube-system
nel cluster myPrivateCluster in myResourceGroup.az aks command invoke \ --resource-group myResourceGroup \ --name myPrivateCluster \ --command "kubectl get pods -n kube-system"
Usare command invoke
per eseguire più comandi
Eseguire più comandi nel cluster usando il comando
az aks command invoke --command
. Il comando di esempio seguente esegue tre comandihelm
nel cluster myPrivateCluster in myResourceGroup.az aks command invoke \ --resource-group myResourceGroup \ --name myPrivateCluster \ --command "helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update && helm install my-release bitnami/nginx"
Usare command invoke
per eseguire comandi con un file o una directory collegati
Eseguire i comandi con un file o una directory collegati usando il comando
az aks command invoke --command
con il parametro--file
. Il comando di esempio seguente eseguekubectl apply -f deployment.yaml -n default
nel cluster myPrivateCluster in myResourceGroup. Il filedeployment.yaml
viene allegato dalla directory corrente nel computer di sviluppo in cuiaz aks command invoke
è stata eseguita.az aks command invoke \ --resource-group myResourceGroup \ --name myPrivateCluster \ --command "kubectl apply -f deployment.yaml -n default" \ --file deployment.yaml
Usare command invoke
per eseguire comandi con tutti i file nella directory corrente collegata
Eseguire i comandi con tutti i file nella directory corrente collegata usando il comando
az aks command invoke --command
con il parametro--file
. Il comando di esempio seguente eseguekubectl apply -f deployment.yaml configmap.yaml -n default
nel cluster myPrivateCluster in myResourceGroup. I filedeployment.yaml
econfigmap.yaml
fanno parte della directory corrente nel computer di sviluppo in cuiaz aks command invoke
è stata eseguita.az aks command invoke \ --resource-group myResourceGroup \ --name myPrivateCluster \ --command "kubectl apply -f deployment.yaml configmap.yaml -n default" \ --file .
Risoluzione dei problemi
Per informazioni sui problemi più comuni relativi a az aks command invoke
e su come risolverli, vedere Risolvere az aks command invoke
gli errori.
Passaggi successivi
In questo articolo si è appreso come accedere a un cluster privato ed eseguire comandi in tale cluster. Per altre informazioni sui cluster del servizio Azure Kubernetes, vedere gli articoli indicati di seguito:
Azure Kubernetes Service