Dela via


Få åtkomst till ett privat AkS-kluster (Azure Kubernetes Service) med hjälp av kommandofunktionen anropa eller kör

När du kommer åt ett privat AKS-kluster måste du ansluta till klustret från det virtuella klustrets virtuella nätverk, ett peer-kopplat nätverk eller en konfigurerad privat slutpunkt. Dessa metoder kräver att du konfigurerar ett VPN, Express Route, distribuerar en jumpbox i klustrets virtuella nätverk eller skapar en privat slutpunkt i ett annat virtuellt nätverk.

Med Azure CLI kan du använda command invoke för att komma åt privata kluster utan att behöva konfigurera en VPN- eller Express Route. command invoke gör att du kan fjärranropa kommandon, till exempel kubectl och helm, i ditt privata kluster via Azure-API:et utan att ansluta direkt till klustret. Åtgärderna Microsoft.ContainerService/managedClusters/runcommand/action och Microsoft.ContainerService/managedclusters/commandResults/read styr behörigheterna för att använda command invoke.

Med Azure Portal kan du använda Run command funktionen för att köra kommandon i ditt privata kluster. Funktionen Run command använder samma command invoke funktioner för att köra kommandon i klustret.

Podden som skapats av Run command tillhandahåller kubectl och helm för att använda klustret. jq, xargs, grepoch awk är tillgängliga för Bash-support.

Innan du börjar

Kontrollera att du har följande resurser och behörigheter innan du börjar:

  • Ett befintligt privat kluster. Om du inte har något kan du läsa Skapa ett privat AKS-kluster.
  • Azure CLI version 2.24.0 eller senare. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.
  • Åtkomst till rollerna Microsoft.ContainerService/managedClusters/runcommand/action och Microsoft.ContainerService/managedclusters/commandResults/read i klustret.

Begränsningar

Den här funktionen är utformad för att förenkla klusteråtkomsten och är inte utformad för programmatisk åtkomst. Om du har ett program som anropar Kubernetes med , Run commandgäller följande nackdelar:

  • Du får bara exitCode - och textutdata och du förlorar information på API-nivå.
  • Ett extra hopp introducerar extra felpunkter.

Podden som skapats av Run command är hårdkodad med en 200m CPU och 500Mi memory begäran samt en 500m CPU och-gräns 1Gi memory . I sällsynta fall där alla noder är packade kan podden inte schemaläggas inom ARM API-begränsningen på 60 sekunder. Det innebär att Run command skulle misslyckas, även om det är konfigurerat för autoskalning.

command invoke kör kommandona från klustret, så alla kommandon som körs på det här sättet omfattas av dina konfigurerade nätverksbegränsningar och andra konfigurerade begränsningar. Se till att det finns tillräckligt med noder och resurser i klustret för att schemalägga den här kommandopodden.

Kommentar

Utdata för command invoke är begränsade till 512 kB i storlek.

Köra kommandon i ditt AKS-kluster

Använd command invoke för att köra ett enda kommando

  • Kör ett kommando i klustret med kommandot az aks command invoke --command . Följande exempelkommando kör kubectl get pods -n kube-system kommandot på myPrivateCluster-klustret i myResourceGroup.

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

Använd command invoke för att köra flera kommandon

  • Kör flera kommandon i klustret med hjälp av az aks command invoke --command kommandot . Följande exempelkommando kör tre helm kommandon i myPrivateCluster-klustret i 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"
    

Använd command invoke för att köra kommandon med en bifogad fil eller katalog

  • Kör kommandon med en bifogad fil eller katalog med kommandot az aks command invoke --command med parametern --file . Följande exempelkommando körs kubectl apply -f deployment.yaml -n defaultmyPrivateCluster-klustret i myResourceGroup. Filen deployment.yaml är ansluten från den aktuella katalogen på utvecklingsdatorn där az aks command invoke den kördes.

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

Använd command invoke för att köra kommandon med alla filer i den aktuella katalogen som är ansluten

  • Kör kommandon med alla filer i den aktuella katalogen som är anslutna az aks command invoke --command med kommandot med parametern --file . Följande exempelkommando körs kubectl apply -f deployment.yaml configmap.yaml -n defaultmyPrivateCluster-klustret i myResourceGroup. Filerna deployment.yaml och configmap.yaml är en del av den aktuella katalogen på utvecklingsdatorn där az aks command invoke kördes.

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

Felsökning

Information om de vanligaste problemen med az aks command invoke och hur du åtgärdar dem finns i Lösa az aks command invoke fel.

Nästa steg

I den här artikeln har du lärt dig att komma åt ett privat kluster och köra kommandon i klustret. Mer information om AKS-kluster finns i följande artiklar: