Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous accédez à un cluster Azure Kubernetes Service (AKS) privé, vous devez vous connecter au cluster depuis le réseau virtuel (VNet) du cluster, un réseau appairé ou un point de terminaison privé configuré. Ces approches nécessitent une configuration supplémentaire, comme la configuration d’un VPN ou d’un itinéraire Express.
Avec l'interface Azure CLI, vous pouvez utiliser command invoke pour accéder à des clusters privés sans avoir à configurer un VPN ou ExpressRoute.
command invoke vous permet d’invoquer à distance des commandes comme kubectl et helm sur votre cluster privé par le biais de l’API Azure sans vous connecter directement au cluster. Les actions Microsoft.ContainerService/managedClusters/runcommand/action RBAC et Microsoft.ContainerService/managedClusters/commandResults/read contrôlent les autorisations d’utilisation de command invoke.
Avec le portail Azure, vous pouvez utiliser la fonctionnalité Run command pour exécuter des commandes sur votre cluster privé. La fonctionnalité Run command utilise la même fonctionnalité command invoke pour exécuter des commandes sur votre cluster. Le pod créé par Run command fournit kubectl et helm pour l’exploitation de votre cluster.
jq, xargs, grep et awk sont disponibles pour la prise en charge Bash.
Conseil / Astuce
Vous pouvez utiliser Azure Copilot pour exécuter kubectl des commandes dans le portail Azure. Pour plus d’informations, consultez Utiliser efficacement des clusters AKS à l’aide d’Azure Copilot.
Prerequisites
Configuration requise pour le système et l’autorisation
| Type d’exigence | Specification | Comment le vérifier |
|---|---|---|
| Version d’Azure CLI | 2.24.0 ou version ultérieure | Utilisez la commande az --version pour vérifier la version que vous utilisez. |
| Cluster AKS privé | Doit déjà exister | Si vous n’avez pas de cluster privé existant, suivez les étapes décrites dans Créer un cluster AKS privé. |
| Actions RBAC |
Microsoft.ContainerService/managedClusters/runcommand/action et Microsoft.ContainerService/managedClusters/commandResults/read |
Vérifiez à l’aide de la page contrôle d’accès du portail Azure (IAM) ou de la az role assignment list commande Azure CLI. |
Commandes d'exécution des spécifications des ressources du pod
| Type de ressource | Valeur | Impact |
|---|---|---|
| Demandes de CPU | 200m | Processeur minimal réservé pour le pod de commande |
| Demandes de mémoire | 500 Mio | Mémoire minimale réservée pour le pod de commande |
| Limites du processeur | 500 m | Processeur maximal disponible pour le pod de commande |
| Limites de mémoire | 1Gi | Mémoire maximale disponible pour le pod de commande |
| Délai d’expiration de l’API Azure Resource Manager (ARM) | 60 secondes | Durée maximale de planification des pods |
| Limite de taille de sortie | 512 ko | Taille maximale de sortie de commande |
Limitations et considérations
Étendue de conception
- Non pour l’accès par programmation : utilisez Bastion, VPN ou ExpressRoute pour les appels d’API automatisés.
- Dépendance de programmation des pods : nécessite des ressources de cluster suffisantes (consultez les spécifications des ressources).
- Limitations de sortie : exitCode et text uniquement, aucun détail au niveau de l’API.
- Les contraintes réseau s’appliquent : soumises aux restrictions de mise en réseau et de sécurité du cluster.
Points d’échec potentiels
- Échec de planification des pods si les nœuds sont limités en ressources.
- Délai d’expiration de l’API ARM (60 secondes) si le pod ne peut pas être planifié rapidement.
- Troncation de sortie si la réponse dépasse la limite de 512 ko.
Utiliser command invoke sur un cluster AKS privé avec Azure CLI
Définissez les variables d’environnement pour votre groupe de ressources et le nom du cluster à utiliser dans les commandes suivantes.
export AKS_RESOURCE_GROUP="<resource-group-name>" export AKS_CLUSTER_NAME="<cluster-name>"Ces variables d’environnement vous permettent d’exécuter des commandes AKS sans avoir à réécrire leurs noms.
Utiliser command invoke pour exécuter une seule commande
Exécutez une seule commande sur votre cluster à l’aide de la
az aks command invokecommande et du--commandparamètre pour spécifier la commande à exécuter. L'exemple suivant récupère les pods dans l'espace de nomskube-system.az aks command invoke \ --resource-group $AKS_RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME \ --command "kubectl get pods -n kube-system"
Utiliser command invoke pour exécuter plusieurs commandes
Exécutez plusieurs commandes sur votre cluster à l’aide de la
az aks command invokecommande et du--commandparamètre pour spécifier les commandes à exécuter. L’exemple suivant ajoute le référentiel de graphiques Bitnami Helm, met à jour le référentiel et installe lenginxgraphique.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"
Utiliser command invoke pour exécuter des commandes avec un fichier joint
Si vous souhaitez exécuter une commande avec un fichier joint, le fichier doit exister et être accessible dans votre répertoire de travail actuel. Dans l’exemple suivant, nous créons un fichier de déploiement minimal pour la démonstration.
Créez un fichier manifeste Kubernetes nommé
deployment.yaml. L’exemple de fichier de déploiement suivant déploie unnginxpod.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 EOFAppliquez le fichier de déploiement à votre cluster à l’aide de la commande
az aks command invokeavec le paramètre--filepour rattacher le fichier. L’exemple suivant applique le fichierdeployment.yamlà l’espace de nomsdefault.az aks command invoke \ --resource-group $AKS_RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME \ --command "kubectl apply -f deployment.yaml -n default" \ --file deployment.yaml
Permet command invoke d’exécuter des commandes avec tous les fichiers du répertoire actif
Remarque
Utilisez uniquement de petits fichiers nécessaires pour éviter de dépasser les limites de taille du système.
Dans l’exemple suivant, nous créons deux fichiers de déploiement minimal pour la démonstration.
Créez deux fichiers manifeste Kubernetes nommés
deployment.yamletconfigmap.yaml. Les exemples de fichiers de déploiement suivants déploient unnginxpod et créent un ConfigMap avec un message de bienvenue.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" EOFAppliquez les fichiers de déploiement à votre cluster à l'aide de la commande
az aks command invokeavec le paramètre--filepour attacher le fichier. L’exemple suivant applique les fichiersdeployment.yamletconfigmap.yamlà l’espace de nomsdefault.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
Utiliser Run command sur un cluster AKS privé dans le portail Azure
Vous pouvez utiliser les commandes suivantes kubectl avec la Run command fonctionnalité :
kubectl get nodeskubectl get deploymentskubectl get podskubectl describe nodeskubectl describe pod <pod-name>kubectl describe deployment <deployment-name>kubectl apply -f <file-name>
Utiliser Run command pour exécuter une seule commande
- Dans le portail Azure, accédez à votre cluster privé.
- Dans le menu du service, sous ressources Kubernetes, sélectionnez Commande Exécuter.
- Entrez la commande que vous souhaitez exécuter et sélectionnez Exécuter.
Utilisez Run command pour exécuter des commandes avec des fichiers joints
Dans le portail Azure, accédez à votre cluster privé.
Dans le menu du service, sous ressources Kubernetes, sélectionnez Commande Exécuter.
Sélectionnez Joindre des fichiers>Parcourir les fichiers.
Sélectionnez le fichier ou les fichiers que vous souhaitez joindre, puis sélectionnez Joindre.
Entrez la commande que vous souhaitez exécuter et sélectionnez Exécuter.
Désactiver Run command
Vous pouvez désactiver la Run command fonctionnalité en définissant .properties.apiServerAccessProfile.disableRunCommand sur true.
Résoudre les problèmes avec command invoke
Pour plus d’informations sur les problèmes les plus courants liés à az aks command invoke et sur la façon de les résoudre, consultez Résoudre les échecs « az aks command invoke ».
Contenu connexe
Dans cet article, vous avez appris à accéder à un cluster privé et à exécuter des commandes sur ce cluster. Pour plus d’informations sur les clusters AKS, consultez la documentation suivante :