Compartir a través de


Solución de problemas de clústeres o nodos de Azure Kubernetes Service en estado de error

En este artículo se describe cómo solucionar problemas de un clúster o nodo de Microsoft Azure Kubernetes Service (AKS) que entra en un estado con errores.

Causas comunes

Estas son las causas comunes de un clúster o grupo de nodos con errores:

Causa Referencia
Error de aprovisionamiento de la extensión de script personalizado (CSE) de la máquina virtual Solución de problemas de errores de nodo no preparado causados por errores de CSE
Recursos de Azure clave no disponibles
Error de asignación de máquina virtual debido a que no hay capacidad zonal o regional
Error de asignación de máquinas virtuales debido a la cuota de núcleos superada Error de cuotaexceeded
Restricciones impuestas por el cliente
Problemas de carga de trabajo

Solución de problemas básicas de errores comunes que provocan un error en un clúster o nodo

En la tabla siguiente se describen algunos errores comunes que pueden provocar que un clúster o nodo escriba un estado con errores, sus descripciones y métodos básicos de solución de problemas para resolver estos errores.

Error Description Método de solución de problemas
OutboundConnFailVMExtensionError Este error indica que la extensión de máquina virtual no se puede instalar o actualizar debido a una falta de conectividad saliente. Compruebe las reglas del grupo de seguridad de red (NSG) y la configuración del firewall de la máquina virtual o del conjunto de escalado de máquinas virtuales. Asegúrese de que la máquina virtual o el conjunto de escalado de máquinas virtuales pueden acceder a estos puntos de conexión: https://aka.ms/aks/outbound, https://aka.ms/aks/ssh, https://aka.ms/aks/agenty https://aka.ms/aks/containerinsights.
Error de purga Este error indica que el nodo no se puede purgar antes de la operación de actualización. Compruebe el estado del pod y los eventos del nodo mediante los comandos kubectl: kubectl get pods --all-namespaces -o wide y kubectl describe pod <pod-name> -n <namespace>. Busque los pods bloqueados en un estado terminado o desconocido o con errores o advertencias en los eventos. Es posible que tenga que forzar la eliminación de los pods o reiniciar el servicio kubelet en el nodo.
Error SubscriptionNotRegistered Este error indica que la suscripción no está registrada para usar el proveedor de recursos de AKS. Registre la suscripción mediante el az provider register --namespace Microsoft.ContainerService comando .
Error RequestDisallowedByPolicy Este error indica que la operación está bloqueada por una directiva aplicada a la suscripción o al grupo de recursos. Revise los detalles de la directiva y los ámbitos de asignación de directivas. Para permitir la operación, es posible que tenga que modificar o excluir la directiva.
Error de QuotaExceeded Este error indica que la operación supera el límite de cuota para un tipo de recurso o una región. Compruebe el uso de cuota actual y el límite de cuota para el tipo de recurso o región mediante Azure Portal, la CLI de Azure o Azure PowerShell. Es posible que tenga que eliminar algunos recursos no utilizados o solicitar un aumento de cuota.
Error de PublicIPCountLimitReached Este error indica que la operación alcanza el número máximo de direcciones IP públicas que se pueden crear en una suscripción o región. Compruebe el uso actual de la dirección IP pública y el límite de la suscripción o región mediante Azure Portal, la CLI de Azure o Azure PowerShell. Es posible que tenga que eliminar algunas direcciones IP públicas no utilizadas o solicitar un aumento en el límite de direcciones IP públicas.
Error overconstrainedAllocationRequest Este error indica que la operación no puede asignar el tamaño de máquina virtual solicitado en una región. Compruebe la disponibilidad del tamaño de máquina virtual en la región mediante Azure Portal, la CLI de Azure o Azure PowerShell. Es posible que tenga que elegir un tamaño de máquina virtual diferente o una región diferente.
Error readOnlyDisabledSubscription Este error indica que la suscripción está deshabilitada actualmente y establecida en de solo lectura. Revise y ajuste los permisos de suscripción, ya que es posible que la suscripción se haya suspendido debido a problemas de facturación, crédito expirado o infracciones de directivas.

Solución de problemas básicos de otros posibles problemas que provocan un error en un clúster o nodo

En esta tabla se describen otros posibles problemas que pueden provocar que un clúster o nodo escriba un estado con errores, sus descripciones y soluciones para corregir estos problemas.

Problema Descripción Solución
El tamaño de la subred es demasiado pequeño La operación no puede crear ni actualizar el clúster porque la subred no tiene suficiente espacio para acomodar el número necesario de nodos. Elimine el grupo de nodos y cree uno con un tamaño de subred mayor mediante Azure Portal, la CLI de Azure o Azure PowerShell.
La red virtual está bloqueada La operación no puede comunicarse con el servidor de API de clúster o el plano de control de Kubernetes porque el firewall o un valor personalizado del sistema de nombres de dominio (DNS) bloquea las conexiones salientes de los nodos. Permita el tráfico del nodo en el firewall y configure la resolución DNS en Azure mediante Azure Portal, la CLI de Azure o Azure PowerShell.
Problemas de PDB La operación no puede actualizar el clúster porque una PDB detuvo la eliminación de uno o varios pods. Una PDB es un recurso que limita el número de pods que se pueden finalizar voluntariamente durante un período específico. Quite temporalmente el PDB, concilie el clúster y, a continuación, vuelva a agregar PDB mediante la herramienta de línea de comandos kubectl.
Problemas de infraestructura La operación no puede actualizar el clúster debido a un problema interno con el servicio Azure Resource Manager (ARM) que administra los recursos en Azure. Realice una conciliación de grupos de agentes para cada grupo de nodos y una conciliación para el clúster administrado mediante la CLI de Azure o Azure PowerShell.
Errores del servidor de API La operación no puede acceder al servidor de API de clúster ni al plano de control de Kubernetes debido a una interrupción o a un error. Notifique al equipo de soporte técnico de AKS y proporcione los registros y la información de diagnóstico pertinentes. Puede obtener los registros y la información de diagnóstico mediante Azure Portal, la CLI de Azure o Azure PowerShell.

Nota:

  • La operación mencionada en la tabla anterior hace referencia a cualquier operación de actualización (PUT) desencadenada desde el lado cliente.
  • En Kubernetes, hay un componente dentro de un controlador. Garantiza el estado real del mundo, incluido el estado del clúster y estados potencialmente externos, como ejecutar contenedores para Kubelet o equilibradores de carga para un proveedor de nube. Se alinea con el estado deseado especificado en un objeto . Este proceso de alineación es una función clave del controlador. Para AKS, este componente garantiza que el estado del clúster de AKS se alinee con la configuración deseada. Para desencadenarlo manualmente, ejecute az resource update --ids <AKS cluster id>. Para obtener el identificador del clúster de AKS, ejecute az aks show -n <cluster name> -g <cluster resource group> -o json --query id. Si hay alguna diferencia entre los estados reales y deseados, realice las acciones necesarias para corregir estas discrepancias.

Comprobación de estado de aprovisionamiento

Para comprobar el estado del clúster, seleccione Comprobación de estado de aprovisionamiento. A continuación, se muestra el estado de aprovisionamiento del clúster y el grupo de agentes.

Captura de pantalla que muestra la opción

Escenario 1: El clúster está en estado de error

Para resolver este problema, obtenga la operación que provoca el error y descubra el error. Estos son dos errores de operación comunes que pueden dar lugar a un clúster con errores:

  • Error de creación del clúster
  • Error en la actualización de clústeres

Si un clúster creado o actualizado recientemente está en estado de error, use los métodos siguientes para solucionar el error:

Visualización del registro de actividad de un clúster con errores mediante Azure Portal

Para ver los registros de actividad de un clúster con errores desde Azure Portal, siga estos pasos:

  1. En Azure Portal, vaya a la página Grupos de recursos y seleccione el grupo de recursos que contiene el clúster.

  2. En la página Información general , seleccione el nombre del clúster en la lista de recursos.

  3. En la página del clúster, seleccione Registro de actividad en el menú izquierdo.

  4. En la página Registro de actividad, puede filtrar eventos por Estado, Intervalo de tiempo, Evento iniciado por y Categoría de eventos. Por ejemplo, puede seleccionar Failed (Error ) en la lista desplegable Estado para ver solo los eventos con errores.

    Captura de pantalla que muestra cómo filtrar eventos en la página

  5. Para comprobar los detalles de un evento, seleccione el nombre del evento en la lista. Se abre un nuevo panel con los datos JSON, propiedades y resumen de eventos. También puede descargar los datos JSON como un archivo.

  6. Para comprobar el código de error y el mensaje asociados al evento, desplácese hacia abajo hasta la sección Estado del resumen del evento. También puede encontrar la información de error en las secciones propiedades y datos JSON.

Visualización del registro de actividad de un clúster con errores mediante la CLI de Azure

Si prefiere usar la CLI de Azure para ver el registro de actividad de un clúster con errores, siga estos pasos:

  1. Instale la CLI de Azure en la máquina e inicie sesión con su cuenta de Azure.

  2. Enumere los grupos de recursos de la suscripción mediante el az group list comando y busque el nombre del grupo de recursos que contiene el clúster.

  3. Enumere los recursos del grupo de recursos mediante el az resource list comando con el --resource-group parámetro y busque el nombre del clúster.

  4. Enumere el registro de actividad del clúster mediante el az monitor activity-log list comando con los --resource-group parámetros y --resource . También puede usar los --statusparámetros , --start-time, --end-time, --callery --filter para filtrar eventos por criterios diferentes. Por ejemplo, puede usar --status Failed para ver solo eventos con errores.

  5. Muestre los detalles de un evento específico mediante el az monitor activity-log show comando con los --resource-groupparámetros , --resourcey --event-id . Puede encontrar el identificador de evento en la salida del comando anterior. La salida incluirá el resumen de eventos, las propiedades y los datos JSON. También puede usar el --output parámetro para cambiar el formato de salida.

  6. Para ver el código de error y el mensaje asociados al evento, busque el statusMessage campo en la salida del comando. También puede encontrar la información de error en las secciones propiedades y datos JSON.

    Captura de pantalla que muestra los datos JSON.

Uso de la característica Diagnosticar y resolver problemas de AKS para un clúster con errores

En Azure Portal, vaya al recurso de clúster de AKS y seleccione Diagnosticar y resolver problemas en el menú de la izquierda. Verá una lista de categorías y escenarios que puede seleccionar para ejecutar comprobaciones de diagnóstico y obtener soluciones recomendadas.

En la CLI de Azure, use el az aks collect comando con los --name parámetros y --resource-group para recopilar datos de diagnóstico de los nodos del clúster. También puede usar los --storage-account parámetros y --sas-token para especificar una cuenta de Azure Storage donde se cargarán los datos. La salida incluirá un vínculo a la hoja Diagnosticar y resolver problemas , donde puede ver los resultados y las acciones sugeridas.

En la hoja Diagnosticar y resolver problemas , puede seleccionar Problemas de clúster como categoría. Si se detectan problemas, verá una lista de posibles soluciones que puede seguir para corregirlos.

Captura de pantalla que muestra las posibles soluciones en el portal

Escenario 2: El nodo está en estado de error

En raras ocasiones, una operación de desasociación de discos de Azure puede producir un error parcial, lo que deja la máquina virtual del nodo en estado de error.

Para resolver este problema, actualice manualmente el estado de la máquina virtual mediante uno de los métodos siguientes:

  • Para un clúster basado en un conjunto de disponibilidad, ejecute el siguiente comando az vm update :

    az vm update --resource-group <resource-group-name> --name <vm-name>
    
  • Para un clúster basado en un conjunto de escalado de máquinas virtuales, ejecute el siguiente comando az vmss update-instances :

    az vmss update-instances --resource-group <resource-group-name> --name <scale-set-name> --instance-id <vm-or-scale-set-id>
    

Escenario 3: El grupo de nodos está en estado de error

Este problema puede producirse cuando el conjunto de escalado de máquinas virtuales o el conjunto de disponibilidad que respalda el grupo de nodos encuentra un error durante el aprovisionamiento, el escalado o la actualización. Este problema puede deberse a una capacidad insuficiente, límites de cuota, problemas de red, infracciones de directivas, bloqueos de recursos u otros factores que impiden que la máquina virtual se asigne o configure correctamente.

Para solucionar este problema, siga estos pasos:

  1. Compruebe el estado del grupo de nodos con el comando az aks nodepool show. Si el estado de aprovisionamiento es Failed, puede ver el mensaje de error y el código en la salida.
  2. Compruebe el estado del conjunto de escalado de máquinas virtuales o del conjunto de disponibilidad mediante el az vmss show comando o az vm availability-set show . Si el estado de aprovisionamiento es Failed, puede ver el mensaje de error y el código en la salida.
  3. Compruebe el estado de la máquina virtual individual del grupo de nodos mediante el az vmss list-instances comando o az vm list . Si alguna máquina virtual está en un Failed estado o Unhealthy , puede ver el mensaje de error y el código en la salida.
  4. Compruebe el registro de actividad y la configuración de diagnóstico del conjunto de escalado de máquinas virtuales o del conjunto de disponibilidad para ver si hay eventos o alertas que indiquen la causa del error. Puede usar Azure Portal, la CLI de Azure o la API de Azure Monitor para acceder al registro de actividad y la configuración de diagnóstico.
  5. Compruebe la cuota y la capacidad de la región y la suscripción donde se implementa el grupo de nodos. Puede usar el az vm list-usage comando o Azure Portal para comprobar la cuota y la capacidad. Si se alcanza el límite de cuota o capacidad, puede solicitar un aumento o eliminar algunos recursos no utilizados.
  6. Compruebe la directiva y las asignaciones de roles del grupo de nodos. Puede usar los az policy comandos y az role o Azure Portal para comprobar las definiciones de directiva, las asignaciones, el cumplimiento y las exenciones. También puede comprobar las asignaciones de roles y los permisos del grupo de nodos mediante el az role assignment comando o Azure Portal.
  7. Compruebe los bloqueos de recursos del grupo de nodos. Puede usar el az lock comando o Azure Portal para comprobar el nivel de bloqueo, el ámbito y las notas. También puede eliminar o actualizar el bloqueo si es necesario.

Otras herramientas de registro y diagnóstico

Si los métodos de solución de problemas anteriores no resuelven el problema, puede usar las siguientes herramientas de registro y diagnóstico para recopilar más información e identificar la causa principal:

  • Azure Monitor para contenedores:

    Este servicio recopila y analiza métricas y registros de clústeres de AKS y los nodos. Azure Monitor para contenedores puede supervisar el estado, el rendimiento y la disponibilidad del clúster y del nodo. También puede usarlo para ver los registros de contenedor, los registros de kubelet y los registros de diagnóstico de arranque de nodo.

  • AKS Periscope

    Esta herramienta recopila registros de nodo y pod, información de red y configuración de clúster de un clúster de AKS y los carga en una cuenta de almacenamiento de Azure. Esta herramienta puede ayudarle a solucionar problemas comunes del clúster, como la resolución dns, la conectividad de red y el estado del nodo. También puede usarlo para generar una solicitud de soporte técnico con los registros recopilados adjuntos.

  • AKS Diagnostics

    Esta herramienta ejecuta una serie de comprobaciones en clústeres de AKS y los nodos y proporciona recomendaciones y pasos de corrección para problemas comunes. Esta herramienta puede ayudarle a solucionar problemas relacionados con la creación, actualización, escalado, redes, almacenamiento y seguridad del clúster. También puede usarlo para generar una solicitud de soporte técnico con los resultados de diagnóstico adjuntos.

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.