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 (Azure Kubernetes Service), moet u verbinding maken met het cluster vanuit het virtuele clusternetwerk (VNet), een gekoppeld netwerk of een geconfigureerd privé-eindpunt. Voor deze benaderingen is extra configuratie vereist, zoals het instellen van een VPN of Express Route.

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 RBAC-acties Microsoft.ContainerService/managedClusters/runcommand/action en Microsoft.ContainerService/managedClusters/commandResults/read bepalen de machtigingen voor het gebruik.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 door Run command is gecreëerd, biedt kubectl en helm voor het beheren van uw cluster. jq, xargs, grepen awk zijn beschikbaar voor Bash-ondersteuning.

Aanbeveling

U kunt Azure Copilot gebruiken om opdrachten uit te voeren kubectl in Azure Portal. Zie Werken met AKS-clusters efficiënt met behulp van Azure Copilot voor meer informatie.

Vereiste voorwaarden

Systeem- en machtigingsvereisten

Vereiste type Specification Zo controleert u dit
Azure CLI-versie 2.24.0 of hoger Gebruik de opdracht az --version om uw versie te controleren.
Privé-AKS-cluster Moet al bestaan Als u geen bestaand privécluster hebt, volgt u de stappen in Een privé-AKS-cluster maken.
RBAC-acties Microsoft.ContainerService/managedClusters/runcommand/action en Microsoft.ContainerService/managedClusters/commandResults/read Controleer met de Azure Portal Toegangsbeheer (IAM)-pagina of de az role assignment list Azure CLI-opdracht.

Voer specificaties van pod-resources uit

Hulpmiddeltype Waarde Impact
CPU-aanvragen 200m Minimale CPU gereserveerd voor opdrachtpod
Geheugenaanvragen 500Mi Minimaal geheugen gereserveerd voor opdrachtpod
CPU-limieten 500m Maximale CPU beschikbaar voor commandopod
Geheugenlimieten 1 GiB Maximaal beschikbaar geheugen voor commandopod
Time-out voor ARM-API (Azure Resource Manager) 60 seconden Maximale tijd voor pod-schedulering
Limiet voor uitvoergrootte 512kB Maximale uitvoergrootte van opdracht

Beperkingen en overwegingen

Ontwerpbereik

  • Niet voor programmatische toegang: Bastion, VPN of ExpressRoute gebruiken voor geautomatiseerde API-aanroepen.
  • Afhankelijkheid van podplanning: vereist voldoende clusterresources (zie de resourcespecificaties).
  • Uitvoerbeperkingen: alleen exitCode en tekst , geen details op API-niveau.
  • Netwerkbeperkingen zijn van toepassing: onderhevig aan clusternetwerken en beveiligingsbeperkingen.

Mogelijke foutpunten

  • Fout bij het plannen van pods als knooppunten resourcebeperking hebben.
  • Time-out van ARM-API (60 seconden) als pod niet snel kan worden gepland.
  • Uitvoerafkapping als het antwoord groter is dan 512kB-limiet.

Gebruiken command invoke op een privé-AKS-cluster met de Azure CLI

  • Stel omgevingsvariabelen in voor uw resourcegroep en clusternaam voor gebruik in volgende opdrachten.

    export AKS_RESOURCE_GROUP="<resource-group-name>"
    export AKS_CLUSTER_NAME="<cluster-name>"
    

    Met deze omgevingsvariabelen kunt u AKS-opdrachten uitvoeren zonder dat u hun namen hoeft te herschrijven.

Voer met command invoke één opdracht uit

  • Voer één opdracht uit op uw cluster met behulp van de az aks command invoke opdracht en de --command parameter om de opdracht op te geven die moet worden uitgevoerd. In het volgende voorbeeldcode worden de pods in de kube-system naamruimte verkregen.

    az aks command invoke \
      --resource-group $AKS_RESOURCE_GROUP \
      --name $AKS_CLUSTER_NAME \
      --command "kubectl get pods -n kube-system"
    

Gebruik command invoke om meerdere opdrachten uit te voeren

  • Voer meerdere opdrachten uit op uw cluster met behulp van de az aks command invoke opdracht en de --command parameter om de opdrachten op te geven die moeten worden uitgevoerd. In het volgende voorbeeld wordt de Bitnami Helm-grafiekopslagplaats toegevoegd, wordt de opslagplaats bijgewerkt en wordt de nginx grafiek geïnstalleerd.

    az aks command invoke \
      --resource-group $AKS_RESOURCE_GROUP \
      --name $AKS_CLUSTER_NAME \
      --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

Als u een opdracht met een bijgevoegd bestand wilt uitvoeren, moet het bestand bestaan en toegankelijk zijn in uw huidige werkmap. In het volgende voorbeeld maken we een minimaal implementatiebestand voor demonstratie.

  1. Maak een Kubernetes-manifestbestand met de naam deployment.yaml. In het volgende voorbeeldimplementatiebestand wordt een nginx pod geïmplementeerd.

    cat <<EOF > deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-demo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx-demo
      template:
        metadata:
          labels:
            app: nginx-demo
        spec:
          containers:
          - name: nginx
            image: nginx:1.21.6
            ports:
            - containerPort: 80
    EOF
    
  2. Pas het implementatiebestand toe op uw cluster met behulp van de az aks command invoke opdracht met de --file parameter om het bestand toe te voegen. In het volgende voorbeeld wordt het deployment.yaml bestand toegepast op de default naamruimte.

    az aks command invoke \
      --resource-group $AKS_RESOURCE_GROUP \
      --name $AKS_CLUSTER_NAME \
      --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

Opmerking

Gebruik alleen kleine, noodzakelijke bestanden om te voorkomen dat de systeemgroottelimieten worden overschreden.

In het volgende voorbeeld maken we twee minimale implementatiebestanden voor demonstratie.

  1. Maak twee Kubernetes-manifestbestanden met de naam deployment.yaml en configmap.yaml. De volgende voorbeeldimplementatiebestanden implementeren een nginx pod en maken een ConfigMap met een welkomstbericht.

    cat <<EOF > deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-demo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx-demo
      template:
        metadata:
          labels:
            app: nginx-demo
        spec:
          containers:
          - name: nginx
            image: nginx:1.21.6
            ports:
            - containerPort: 80
    EOF
    
    cat <<EOF > configmap.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: nginx-config
    data:
      welcome-message: "Hello from configmap"
    EOF
    
  2. Pas de implementatiebestanden toe op uw cluster met behulp van de az aks command invoke opdracht met de --file parameter om het bestand toe te voegen. In het volgende voorbeeld worden de deployment.yaml en configmap.yaml bestanden toegepast op de default naamruimte.

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

Gebruik Run command op een privé-AKS-cluster in het Azure portal

U kunt de volgende kubectl opdrachten gebruiken met de Run command functie:

  • kubectl get nodes
  • kubectl get deployments
  • kubectl get pods
  • kubectl describe nodes
  • kubectl describe pod <pod-name>
  • kubectl describe deployment <deployment-name>
  • kubectl apply -f <file-name>

Voer met Run command één opdracht uit

  1. Navigeer in Azure Portal naar uw privécluster.
  2. Selecteer de opdracht Uitvoeren in het servicemenu onder Kubernetes-resources.
  3. Voer de opdracht in die u wilt uitvoeren en selecteer Uitvoeren.

Gebruiken Run command om opdrachten uit te voeren met bijgevoegde bestanden

  1. Navigeer in Azure Portal naar uw privécluster.

  2. Selecteer de opdracht Uitvoeren in het servicemenu onder Kubernetes-resources.

  3. Selecteer Bestanden bijvoegen>Bestanden doorzoeken.

    Schermopname van het toevoegen van bestanden aan de opdracht Uitvoeren in Azure Portal.

  4. Selecteer het bestand of de bestanden die u wilt bijvoegen en selecteer Vervolgens Bijvoegen.

  5. Voer de opdracht in die u wilt uitvoeren en selecteer Uitvoeren.

Uitschakelen Run command

U kunt de Run command functie uitschakelen door .properties.apiServerAccessProfile.disableRunCommand in te stellen op true.

Problemen met command invoke oplossen

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

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: