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.
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.
Sugerencia
Puede usar Microsoft Copilot en Azure para ejecutar kubectl
comandos en Azure Portal. Para más información, consulte Trabajar con clústeres de AKS de forma eficaz mediante Microsoft Copilot en Azure.
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
yMicrosoft.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. Debe aprovechar el acceso directo a la API a través de Bastion, VPN o ExpressRoute para las llamadas programáticas a su clúster.
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 por Run command
tiene 200m CPU
y 500Mi memory
las solicitudes, y un 500m CPU
y 1Gi memory
los límites. En los casos en los que todos sus nodos estén llenos o sobresuscritos, es posible que el pod no pueda ser programado dentro del tiempo de espera de 60 segundos de la API de ARM. Esto significa que se produciría un error en la Run command
invocación.
command invoke
ejecuta los comandos del clúster, por lo que los comandos ejecutados de esta manera están sujetos a las 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
A continuación se muestran ejemplos de cómo usar az aks command invoke
para ejecutar comandos en un clúster de AKS privado. En estos ejemplos se supone que tiene un grupo de recursos existente y un clúster de AKS.
Uso de command invoke
para ejecutar un solo comando
Puede ejecutar un comando en el clúster mediante el az aks command invoke --command
comando . En el comando de ejemplo siguiente se ejecuta el comando kubectl get pods -n kube-system
en el clúster myPrivateCluster en myResourceGroup.
En primer lugar, establezca variables de entorno para el grupo de recursos y el nombre del clúster que se usarán en comandos posteriores.
export AKS_RESOURCE_GROUP="myResourceGroup"
export AKS_CLUSTER_NAME="myPrivateCluster"
Las variables de entorno anteriores le permitirán ejecutar comandos de AKS en las secciones siguientes sin tener que volver a escribir sus nombres.
Para ejecutar un único comando kubectl en el clúster de AKS:
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
También puede ejecutar varios comandos. En el ejemplo siguiente se ejecutan tres helm
comandos en secuencia en el clúster.
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
Al usar el --file
parámetro con az aks command invoke
, el archivo debe existir y ser accesible en el directorio de trabajo actual. A continuación, se crea un archivo de implementación mínimo para la demostración.
Para ejecutar un comando con un archivo asociado, cree primero un archivo de manifiesto de Kubernetes denominado deployment.yaml
. En el ejemplo siguiente se crea una implementación de nginx pequeña y se aplica con command invoke
:
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
az aks command invoke \
--resource-group $AKS_RESOURCE_GROUP \
--name $AKS_CLUSTER_NAME \
--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
Use solo archivos pequeños y necesarios para evitar superar los límites de tamaño del sistema. A continuación, se crean dos archivos YAML mínimos antes de adjuntarlos.
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"
EOF
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
Deshabilitar Run command
Puede deshabilitar la característica Run command
estableciendo .properties.apiServerAccessProfile.disableRunCommand
a true
.
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:
Azure Kubernetes Service