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

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 o SchedulingDisabled
  • 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:

  1. En el Azure Portal, busque y seleccione Directiva.

  2. En el panel de navegación Directiva , busque la sección Creación y, a continuación, seleccione Asignaciones.

  3. 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.

  4. En la página de asignación de directivas de esa asignación, seleccione Editar asignación.

  5. Seleccione la pestaña Parámetros .

  6. Desactive la opción Mostrar solo los parámetros que necesitan entrada o revisión .

  7. 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.