Leggere in inglese

Condividi tramite


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. jqgrep, 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:

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 comando kubectl 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 comandi helm 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 esegue kubectl apply -f deployment.yaml -n default nel cluster myPrivateCluster in myResourceGroup. Il file deployment.yaml viene allegato dalla directory corrente nel computer di sviluppo in cui az 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 esegue kubectl apply -f deployment.yaml configmap.yaml -n default nel cluster myPrivateCluster in myResourceGroup. I file deployment.yaml e configmap.yaml fanno parte della directory corrente nel computer di sviluppo in cui az 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: