Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Al acceder a un clúster privado de Azure Kubernetes Service (AKS), debe conectarse al clúster desde la red virtual del clúster (VNet), una red emparejada o un punto de conexión privado configurado. Estos enfoques requieren una configuración adicional, como configurar una VPN o ExpressRoute.
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 de RBAC 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.
Sugerencia
Puede usar Azure Copilot para ejecutar kubectl comandos en Azure Portal. Para más información, consulte Trabajar con clústeres de AKS de forma eficaz mediante Azure Copilot.
Prerrequisitos
Requisitos de sistema y permisos
| Tipo de requisito | Specification | Cómo comprobarlo |
|---|---|---|
| Versión de la CLI de Azure | 2.24.0 o posterior | Use el comando az --version para comprobar la versión. |
| Clúster de AKS privado | Ya debe existir | Si no tiene un clúster privado existente, siga los pasos descritos en Creación de un clúster de AKS privado. |
| Acciones de RBAC |
Microsoft.ContainerService/managedClusters/runcommand/action y Microsoft.ContainerService/managedClusters/commandResults/read |
Compruebe usando la página Control de acceso (IAM) del portal de Azure o el comando de la Azure CLI az role assignment list. |
Especificaciones de recursos para ejecutar comandos de pod
| Tipo de recurso | Importancia | Impacto |
|---|---|---|
| Solicitudes de CPU | 200m | CPU mínima reservada para el pod de comandos |
| Solicitudes de memoria | 500Mi | Memoria mínima reservada para el pod de comandos |
| Límites de CPU | 500 m | Cpu máxima disponible para el pod de comandos |
| Límites de memoria | 1 Gi | Memoria máxima disponible para el pod de comandos |
| Tiempo de espera de la API de Azure Resource Manager (ARM) | 60 segundos | Tiempo máximo para la programación de pods |
| Límite de tamaño de salida | 512 kb | Tamaño máximo de salida del comando |
Limitaciones y consideraciones
Ámbito de diseño
- No para acceso programático: use Bastion, VPN o ExpressRoute para llamadas API automatizadas.
- Dependencia de programación de pods: requiere recursos de clúster suficientes (consulte las especificaciones de recursos).
- Limitaciones de salida: solo exitCode y text , sin detalles de nivel de API.
- Se aplican restricciones de red: sujetas a restricciones de seguridad y redes de clúster.
Posibles puntos de error
- Error de programación de pods si los nodos están restringidos a recursos.
- Tiempo de espera de la API de ARM (60 segundos) si el pod no se puede programar rápidamente.
- Truncamiento de salida si la respuesta supera el límite de 512kB.
Uso command invoke en un clúster de AKS privado con la CLI de Azure
Establezca variables de entorno para el grupo de recursos y el nombre del clúster que se van a usar en los comandos posteriores.
export AKS_RESOURCE_GROUP="<resource-group-name>" export AKS_CLUSTER_NAME="<cluster-name>"Estas variables de entorno permiten ejecutar comandos de AKS sin tener que volver a escribir sus nombres.
Uso de command invoke para ejecutar un solo comando
Ejecute un único comando en el clúster mediante el
az aks command invokecomando y el--commandparámetro para especificar el comando que se va a ejecutar. En el ejemplo siguiente se obtienen los pods del espacio de nombreskube-system.az aks command invoke \ --resource-group $AKS_RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME \ --command "kubectl get pods -n kube-system"
Uso de command invoke para ejecutar varios comandos
Ejecute varios comandos en el clúster mediante el
az aks command invokecomando y el--commandparámetro para especificar los comandos que se van a ejecutar. En el ejemplo siguiente se agrega el repositorio de gráficos de Helm de Bitnami, se actualiza el repositorio e se instala el gráficonginx.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"
Uso command invoke para ejecutar comandos con un archivo adjunto
Si desea ejecutar un comando con un archivo adjunto, el archivo debe existir y ser accesible en el directorio de trabajo actual. En el ejemplo siguiente, creamos un archivo de implementación mínimo para la demostración.
Cree un archivo de manifiesto de Kubernetes denominado
deployment.yaml. El siguiente archivo de implementación de ejemplo implementa 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 EOFAplique el archivo de implementación al clúster mediante el
az aks command invokecomando con el--fileparámetro para adjuntar el archivo. En el siguiente ejemplo se aplica el archivodeployment.yamlal espacio de nombresdefault.az aks command invoke \ --resource-group $AKS_RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME \ --command "kubectl apply -f deployment.yaml -n default" \ --file deployment.yaml
Uso command invoke para ejecutar comandos con todos los archivos del directorio actual
Nota
Use solo archivos pequeños y necesarios para evitar superar los límites de tamaño del sistema.
En el ejemplo siguiente, se crean dos archivos de implementación mínimos para la demostración.
Cree dos archivos de manifiesto de Kubernetes denominados
deployment.yamlyconfigmap.yaml. Los siguientes archivos de implementación de ejemplo implementan unnginxpod y crean un configMap con un mensaje de bienvenida.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" EOFAplique los archivos de implementación al clúster mediante el
az aks command invokecomando con el--fileparámetro para adjuntar el archivo. En el siguiente ejemplo, se aplican los archivosdeployment.yamlyconfigmap.yamlal espacio de nombresdefault.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
Usar Run command en un clúster de AKS privado en el portal de Azure
Puede usar los siguientes kubectl comandos con la Run command característica :
kubectl get nodeskubectl get deploymentskubectl get podskubectl describe nodeskubectl describe pod <pod-name>kubectl describe deployment <deployment-name>kubectl apply -f <file-name>
Uso de Run command para ejecutar un solo comando
- En Azure Portal, vaya al clúster privado.
- En el menú del servicio, en Recursos de Kubernetes, seleccione Ejecutar comando.
- Escriba el comando que quiera ejecutar y seleccione Ejecutar.
Uso de Run command para ejecutar comandos con archivos adjuntos
En Azure Portal, vaya al clúster privado.
En el menú del servicio, en Recursos de Kubernetes, seleccione Ejecutar comando.
Seleccione Adjuntar archivos>Buscar archivos.
Seleccione el archivo o los archivos que desea adjuntar y, a continuación, seleccione Asociar.
Escriba el comando que quiera ejecutar y seleccione Ejecutar.
Deshabilitar Run command
Puede deshabilitar la característica Run command estableciendo .properties.apiServerAccessProfile.disableRunCommand a true.
Resuelve problemas command invoke
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.
Contenido relacionado
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: