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
, grep
och 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
ochMicrosoft.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 command
gä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örkubectl 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 trehelm
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örskubectl apply -f deployment.yaml -n default
på myPrivateCluster-klustret i myResourceGroup. Filendeployment.yaml
är ansluten från den aktuella katalogen på utvecklingsdatorn däraz 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örskubectl apply -f deployment.yaml configmap.yaml -n default
på myPrivateCluster-klustret i myResourceGroup. Filernadeployment.yaml
ochconfigmap.yaml
är en del av den aktuella katalogen på utvecklingsdatorn däraz 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:
Azure Kubernetes Service