Compartir a través de


Acceso a un clúster privado de Azure Kubernetes Service (AKS) mediante la característica de invocación de comandos o Ejecutar comando

Cuando acceda a un clúster AKS privado, necesitará conectarse al clúster desde la red virtual del clúster, desde una red emparejada o mediante un punto de conexión privado configurado. Para estos enfoques es necesario configurar una VPN, Express Route, implementar un jumpbox dentro de la red virtual del clúster o crear un punto de conexión privado dentro de otra red virtual.

Con la CLI de Azure, puede usar también command invoke para acceder a clústeres privados sin tener que configurar una VPN o Express Route. command invoke permite invocar de forma remota comandos, como kubectl y helm, en el clúster privado a través de la API de Azure sin necesidad de conectarse directamente al clúster. Las acciones Microsoft.ContainerService/managedClusters/runcommand/action y Microsoft.ContainerService/managedclusters/commandResults/read controlan los permisos para usar command invoke.

Con Azure Portal, puede usar la característica Run command para ejecutar comandos en el clúster privado. La característica Run command usa la misma funcionalidad command invoke para ejecutar comandos en el clúster.

El pod creado por Run command proporciona kubectl y helm para operar el clúster. jq, xargs, grep, y awk están disponibles para la compatibilidad con Bash.

Antes de empezar

Antes de empezar, asegúrese de tener los siguientes recursos y permisos:

  • Un clúster privado existente. Si no lo tiene, consulte Crear un clúster privado de AKS.
  • La versión 2.24.0 de la CLI de Azure, o cualquier versión posterior. Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.
  • Acceda a los roles Microsoft.ContainerService/managedClusters/runcommand/action y Microsoft.ContainerService/managedclusters/commandResults/read en el clúster.

Limitaciones

Esta característica está diseñada para simplificar el acceso al clúster y no está diseñada para el acceso mediante programación. Si tiene un programa que invoca Kubernetes mediante Run command, se aplican las siguientes desventajas:

  • Solo obtiene exitCode y salida de texto, y pierde los detalles del nivel de API.
  • Un salto adicional presenta puntos de error adicionales.

El pod creado está por Run command codificado de forma rígida con una solicitud 200m CPU y 500Mi memory, y un límite 500m CPU y 1Gi memory. En casos poco frecuentes en los que se empaqueta todo el nodo, el pod no se puede programar dentro de la limitación de la API de ARM de 60 segundos. Esto significa que Run command produciría un error, incluso si está configurado para el escalado automático.

command invoke ejecuta los comandos desde su clúster, por lo que cualquier comando ejecutado de esta manera está sujeto a sus restricciones de red configuradas y a cualquier otra restricción configurada. Asegúrese de que hay suficientes nodos y recursos en el clúster para programar este pod de comandos.

Nota:

La salida de command invoke tiene un tamaño limitado a 512 kB.

Ejecución de comandos en el clúster de AKS

Uso de command invoke para ejecutar un solo comando

  • Ejecute un comando en el clúster mediante el comando az aks command invoke --command. En el comando de ejemplo siguiente se ejecuta el comando kubectl get pods -n kube-system en el clúster myPrivateCluster en myResourceGroup.

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

Uso de command invoke para ejecutar varios comandos

  • Ejecute varios comandos en el clúster mediante el comando az aks command invoke --command. En el comando de ejemplo siguiente se ejecutan tres comandos helm en el clúster myPrivateCluster en 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"
    

Uso de command invoke para ejecutar comandos con un archivo o directorio adjuntos

  • Ejecute comandos con un archivo o directorio adjuntos mediante el comando az aks command invoke --command con el parámetro --file. En el comando de ejemplo siguiente se ejecuta kubectl apply -f deployment.yaml -n default en el clúster myPrivateCluster en myResourceGroup. El archivo deployment.yaml se adjunta desde el directorio actual en el equipo de desarrollo donde az aks command invoke se ha ejecutado.

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

Use command invoke para ejecutar comandos con todos los archivos adjuntos en el directorio actual

  • Ejecute comandos con todos los archivos del directorio actual adjunto mediante el comando az aks command invoke --command con el parámetro --file. En el comando de ejemplo siguiente se ejecuta kubectl apply -f deployment.yaml configmap.yaml -n default en el clúster myPrivateCluster en myResourceGroup. Los archivos deployment.yaml y configmap.yaml forman parte del directorio actual en el equipo de desarrollo donde az aks command invoke se ha ejecutado.

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

Solución de problemas

Para obtener información sobre los problemas más comunes con az aks command invoke y cómo corregirlos, consulte Resolver az aks command invoke errores.

Pasos siguientes

En este artículo, ha aprendido a acceder a un clúster privado y ejecutar comandos en ese clúster. Para obtener más información sobre los clústeres de AKS, consulte los siguientes artículos: