Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 invokeopdracht en de--commandparameter om de opdracht op te geven die moet worden uitgevoerd. In het volgende voorbeeldcode worden de pods in dekube-systemnaamruimte 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 invokeopdracht en de--commandparameter 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 denginxgrafiek 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.
Maak een Kubernetes-manifestbestand met de naam
deployment.yaml. In het volgende voorbeeldimplementatiebestand wordt eennginxpod 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 EOFPas het implementatiebestand toe op uw cluster met behulp van de
az aks command invokeopdracht met de--fileparameter om het bestand toe te voegen. In het volgende voorbeeld wordt hetdeployment.yamlbestand toegepast op dedefaultnaamruimte.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.
Maak twee Kubernetes-manifestbestanden met de naam
deployment.yamlenconfigmap.yaml. De volgende voorbeeldimplementatiebestanden implementeren eennginxpod 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" EOFPas de implementatiebestanden toe op uw cluster met behulp van de
az aks command invokeopdracht met de--fileparameter om het bestand toe te voegen. In het volgende voorbeeld worden dedeployment.yamlenconfigmap.yamlbestanden toegepast op dedefaultnaamruimte.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 nodeskubectl get deploymentskubectl get podskubectl describe nodeskubectl describe pod <pod-name>kubectl describe deployment <deployment-name>kubectl apply -f <file-name>
Voer met Run command één opdracht uit
- Navigeer in Azure Portal naar uw privécluster.
- Selecteer de opdracht Uitvoeren in het servicemenu onder Kubernetes-resources.
- Voer de opdracht in die u wilt uitvoeren en selecteer Uitvoeren.
Gebruiken Run command om opdrachten uit te voeren met bijgevoegde bestanden
Navigeer in Azure Portal naar uw privécluster.
Selecteer de opdracht Uitvoeren in het servicemenu onder Kubernetes-resources.
Selecteer Bestanden bijvoegen>Bestanden doorzoeken.
Selecteer het bestand of de bestanden die u wilt bijvoegen en selecteer Vervolgens Bijvoegen.
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.
Verwante inhoud
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: