Resolución de errores "az aks command invoke"
En este artículo se describe cómo resolver errores de invocación de comando az aks en la CLI de Microsoft Azure para que pueda conectarse correctamente a cualquier clúster de Azure Kubernetes Service (AKS), especialmente a un clúster de AKS privado.
Otros métodos de conexión deben usar componentes de configuración adicionales, como se muestra en la tabla siguiente.
Métodos de conexión | Componente de configuración adicional |
---|---|
Red virtual | Red privada virtual (VPN) |
Red emparejada | Azure ExpressRoute |
Punto de conexión privado | Jumpbox |
El az aks command invoke
comando de la CLI de Azure es una forma alternativa de conectarse a un clúster que no requiere componentes de configuración adicionales.
Al ejecutar el comando, la az aks command invoke
CLI de Azure crea automáticamente un command-<ID>
pod en el aks-command
espacio de nombres para acceder al clúster de AKS y recuperar la información necesaria.
Requisitos previos
Herramienta kubectl de Kubernetes. Para instalar kubectl mediante la CLI de Azure, ejecute el comando az aks install-cli .
Síntomas
En la tabla siguiente se enumeran los mensajes de error comunes az aks command invoke
. Cada mensaje de error tiene un vínculo a la sección que describe por qué se está produciendo el error y cómo corregirlo.
Mensaje de error | Vínculo |
---|---|
La operación devolvió un estado no válido "No encontrado" | Causa 1: No se puede crear el pod debido a restricciones de nodo o recursos |
Error al ejecutar el comando en el clúster administrado debido a un error de kubernetes. detalles: el webhook de admisión "validation.gatekeeper.sh" denegó la solicitud: <policy-specific-message> | Causa 2: Azure Policy no permite la creación del pod |
Error del servidor (prohibido): los espacios de nombres están prohibidos: el usuario "<ID>" no puede enumerar el recurso "<resource>" en el grupo de API "" en el ámbito del clúster. | Causa 3: No se conceden los roles necesarios |
Error al conectarse a MSI. Asegúrese de que MSI está configurado correctamente. Obtener solicitud de token devuelta: Respuesta [400]; |
Causa 4: Hay un problema de Cloud Shell |
Causa 1: No se puede crear el pod debido a restricciones de nodo o recursos
La operación devuelve un Not Found
estado porque el command-<ID>
pod no puede alcanzar un estado correcto, como Running
. (En muchos casos, el pod permanece en el Pending
estado ). En este caso, los nodos no pueden programar el pod. Este escenario puede tener diferentes causas, como las siguientes:
- Restricciones de recursos
- Nodos que tienen un
NotReady
estado oSchedulingDisabled
- Nodos que tienen taints que el pod no puede tolerar
- Otras causas
Solución 1: cambie la configuración para que pueda programar y ejecutar el pod.
Asegúrese de que el command-<ID>
pod se puede programar y ejecutar.
Causa 2: Azure Policy no permite la creación del pod
Si tiene directivas de Azure específicas, el az aks command invoke
comando puede producir un error debido a una configuración no permitida en el command-<ID>
pod. Por ejemplo, es posible que tenga una directiva de Azure que requiera un sistema de archivos raíz de solo lectura u otra configuración específica.
Solución 2: Exención del espacio de nombres para las directivas que prohíben la creación de pods
Se recomienda excluir el aks-command
espacio de nombres de las directivas de Azure asociadas que no permiten la creación del pod. Para obtener más información sobre la exención, consulte Descripción del ámbito en Azure Policy
Para excluir un Azure Policy:
En el Azure Portal, busque y seleccione Directiva.
En el panel de navegación Directiva , busque la sección Creación y, a continuación, seleccione Asignaciones.
En la tabla de asignaciones, busque la fila que contiene el nombre de asignación que desea cambiar y, a continuación, seleccione el nombre de la asignación.
En la página de asignación de directivas de esa asignación, seleccione Editar asignación.
Seleccione la pestaña Parámetros .
Desactive la opción Mostrar solo los parámetros que necesitan entrada o revisión .
En el cuadro Exclusiones de espacio de nombres, agregue el espacio de nombres aks-command a la lista de espacios de nombres que se van a excluir.
Como alternativa, si la directiva no es una directiva integrada, puede comprobar la configuración del command-<ID>
pod y ajustar la directiva según sea necesario. Para explorar la configuración de YAML del pod, ejecute el siguiente comando:
kubectl get pods command-<ID> --namespace aks-command --output yaml
Causa 3: No se conceden los roles necesarios
Para usar el az aks command invoke
comando, debe tener acceso a los siguientes roles en el clúster:
Microsoft.ContainerService/managedClusters/runCommand/action
Microsoft.ContainerService/managedClusters/commandResults/read
Si no tiene estos roles, el az aks command invoke
comando no puede recuperar la información necesaria.
Solución 3: Agregar los roles necesarios
Agregue los Microsoft.ContainerService/managedClusters/runCommand/action
roles y Microsoft.ContainerService/managedClusters/commandResults/read
.
Causa 4: Hay un problema de Cloud Shell
El az aks command invoke
comando no se procesa según lo esperado cuando se ejecuta directamente en el entorno de Azure Cloud Shell. Se trata de un problema conocido en Cloud Shell.
Solución 4a: ejecute primero el comando az login.
En Cloud Shell, ejecute el comando az login antes de ejecutar az aks command invoke
.
Solución 4b: ejecute el comando en un equipo local o en una máquina virtual.
Ejecute el comando en un equipo local o en cualquier máquina virtual (VM) que tenga instalada la az aks command invoke
CLI de Azure.
Aviso de declinación de responsabilidades sobre la información de terceros
Los productos de otros fabricantes que se mencionan en este artículo han sido creados por compañías independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.