Delen via


Toegang krijgen tot een privé-AKS-cluster (Azure Kubernetes Service) met behulp van de opdracht aanroepen of uitvoeren van de opdrachtfunctie

Wanneer u toegang hebt tot een privé-AKS-cluster, moet u verbinding maken met het cluster vanuit het virtuele clusternetwerk, een gekoppeld netwerk of een geconfigureerd privé-eindpunt. Voor deze benaderingen is het configureren van een VPN, Express Route, het implementeren van een jumpbox binnen het virtuele clusternetwerk of het maken van een privé-eindpunt in een ander virtueel netwerk vereist.

Met de Azure CLI kunt u toegang krijgen command invoke tot privéclusters zonder dat u een VPN of Express Route hoeft te configureren. command invoke hiermee kunt u opdrachten op afstand aanroepen, zoals kubectl en helm, op uw privécluster via de Azure-API zonder rechtstreeks verbinding te maken met het cluster. De Microsoft.ContainerService/managedClusters/runcommand/action en Microsoft.ContainerService/managedclusters/commandResults/read acties bepalen de machtigingen voor het gebruik van command invoke.

Met Azure Portal kunt u de Run command functie gebruiken om opdrachten uit te voeren op uw privécluster. De Run command functie gebruikt dezelfde command invoke functionaliteit om opdrachten op uw cluster uit te voeren.

De pod die is gemaakt door het Run command biedt kubectl en helm voor het uitvoeren van uw cluster. jq, xargs, grepen awk zijn beschikbaar voor Bash-ondersteuning.

Voordat u begint

Voordat u begint, moet u ervoor zorgen dat u over de volgende resources en machtigingen beschikt:

  • Een bestaand privécluster. Zie Een privé-AKS-cluster maken als u er nog geen hebt.
  • Azure CLI versie 2.24.0 of hoger. Voer az --version uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.
  • Toegang tot de Microsoft.ContainerService/managedClusters/runcommand/action en Microsoft.ContainerService/managedclusters/commandResults/read rollen in het cluster.

Beperkingen

Deze functie is ontworpen om de toegang tot clusters te vereenvoudigen en is niet ontworpen voor programmatische toegang. Als u een programma hebt dat Kubernetes aanroept met behulp Run commandvan, zijn de volgende nadelen van toepassing:

  • U krijgt alleen exitCode - en tekstuitvoer en u verliest details op API-niveau.
  • Een extra hop introduceert extra storingspunten.

De pod die door de Run command pod is gemaakt, is vastgelegd in code met een 200m CPU en 500Mi memory aanvraag, en een 500m CPU en 1Gi memory limiet. In zeldzame gevallen waarin al uw knooppunt is verpakt, kan de pod niet worden gepland binnen de BEPERKING van de ARM-API van 60 seconden. Dit betekent dat de Run command fout mislukt, zelfs als deze is geconfigureerd voor automatische schaalaanpassing.

command invoke voert de opdrachten uit vanuit uw cluster, zodat opdrachten op deze manier worden uitgevoerd, onderhevig zijn aan uw geconfigureerde netwerkbeperkingen en eventuele andere geconfigureerde beperkingen. Zorg ervoor dat er voldoende knooppunten en resources in uw cluster zijn om deze opdrachtpod te plannen.

Notitie

De uitvoer voor command invoke is beperkt tot 512kB in grootte.

Opdrachten uitvoeren op uw AKS-cluster

Gebruik command invoke deze opdracht om één opdracht uit te voeren

  • Voer een opdracht uit op uw cluster met behulp van de az aks command invoke --command opdracht. Met de volgende voorbeeldopdracht wordt de kubectl get pods -n kube-system opdracht uitgevoerd op het cluster myPrivateCluster in myResourceGroup.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl get pods -n kube-system"
    

Meerdere command invoke opdrachten uitvoeren

  • Voer meerdere opdrachten uit op uw cluster met behulp van de az aks command invoke --command opdracht. Met de volgende voorbeeldopdracht worden drie helm opdrachten uitgevoerd op het 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"
    

Gebruiken command invoke om opdrachten uit te voeren met een bijgevoegd bestand of map

  • Voer opdrachten uit met een bijgevoegd bestand of map met behulp van de az aks command invoke --command opdracht met de --file parameter. De volgende voorbeeldopdracht wordt uitgevoerd kubectl apply -f deployment.yaml -n default op het cluster myPrivateCluster in myResourceGroup. Het deployment.yaml bestand is gekoppeld vanuit de huidige map op de ontwikkelcomputer waar az aks command invoke het is uitgevoerd.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl apply -f deployment.yaml -n default" \
      --file deployment.yaml
    

Gebruiken command invoke om opdrachten uit te voeren met alle bestanden in de huidige map die is bijgevoegd

  • Voer opdrachten uit met alle bestanden in de huidige map die zijn gekoppeld met behulp van de az aks command invoke --command opdracht met de --file parameter. De volgende voorbeeldopdracht wordt uitgevoerd kubectl apply -f deployment.yaml configmap.yaml -n default op het cluster myPrivateCluster in myResourceGroup. De deployment.yaml bestanden en configmap.yaml bestanden maken deel uit van de huidige map op de ontwikkelcomputer waarop az aks command invoke is uitgevoerd.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl apply -f deployment.yaml configmap.yaml -n default" \
      --file .
    

Probleemoplossing

Zie Fouten az aks command invokeoplossen voor informatie over de meest voorkomende problemen met az aks command invoke en hoe u deze kunt oplossen.

Volgende stappen

In dit artikel hebt u geleerd hoe u toegang krijgt tot een privécluster en opdrachten uitvoert op dat cluster. Zie de volgende artikelen voor meer informatie over AKS-clusters: