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.
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.
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 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"
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"
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
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 .
Per informazioni sui problemi più comuni relativi a az aks command invoke
e su come risolverli, vedere Risolvere az aks command invoke
gli errori.
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:
Feedback su Azure Kubernetes Service
Azure Kubernetes Service è un progetto di open source. Selezionare un collegamento per fornire feedback: