Compartir a través de


Solución de problemas Azure Kubernetes Service clústeres o nodos en un 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 de error.

Causas comunes

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

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

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

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

Error Descripción 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 de firewall de la máquina virtual o el 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 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 actual de la cuota y el límite de cuota para el tipo de recurso o la región mediante el 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 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 el 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 el 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 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 directiva.

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 hacer que un clúster o nodo escriba un estado de error, sus descripciones y soluciones para corregir estos problemas.

Problema Descripción Solución
El tamaño de 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 nuevo con un tamaño de subred mayor mediante el 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 del clúster o el plano de control de Kubernetes porque el firewall o una configuración personalizada del sistema de nombres de dominio (DNS) bloquea las conexiones salientes desde los nodos. Permita el tráfico del nodo en el firewall y configure la resolución DNS en Azure mediante el 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 la PDB, reconcilie el clúster y vuelva a agregar la 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 del grupo 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 llegar al servidor de API del clúster o al plano de control de Kubernetes debido a una interrupción o a un error. Informe al equipo de soporte técnico de AKS y proporcione los registros pertinentes y la información de diagnóstico. Puede obtener los registros y la información de diagnóstico mediante el 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 del cliente.
  • En Kubernetes, hay un componente dentro de un controlador. Garantiza el estado real del mundo, incluido el estado del clúster y los estados potencialmente externos, como la ejecución de 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>. Puede obtener el identificador de clúster de AKS mediante la ejecución de az aks show -n <cluster name> -g <cluster resource group> -o json --query id. Si hay diferencias entre los estados real y deseado, 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 del grupo de agentes.

Captura de pantalla que muestra la opción

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

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

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

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

Ver el registro de actividad de un clúster con errores mediante el Azure Portal

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

  1. En el 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ú de la izquierda.

  4. En la página Registro de actividad , puede filtrar los eventos por categoría Estado, Intervalo de tiempo, Evento iniciado por y Evento. Por ejemplo, puede seleccionar 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 el resumen del evento, las propiedades y los datos JSON. 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 de 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 el equipo 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 del evento, 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 de propiedades y datos JSON.

    Captura de pantalla que muestra los datos JSON.

Uso de la característica Diagnóstico y resolución de problemas de AKS para un clúster con errores

En el Azure Portal, vaya al recurso del 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 detecta algún problema, 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 un estado de error

En raras ocasiones, una operación de desasociación de Disco de Azure puede producir un error parcial, lo que deja la máquina virtual del nodo en un 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 un 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 resolver este problema, siga estos pasos:

  1. Compruebe el estado del grupo de nodos mediante el az aks nodepool show comando . 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 en el 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 el conjunto de disponibilidad para ver si hay eventos o alertas que indiquen la causa del error. Puede usar la Azure Portal, la CLI de Azure o la API de Azure Monitor para acceder al registro de actividad y a 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 el Azure Portal para comprobar la cuota y la capacidad. Si se alcanza la cuota o el límite de capacidad, puede solicitar un aumento o eliminar algunos recursos no utilizados.
  6. Compruebe las asignaciones de directivas y roles del grupo de nodos. Puede usar los az policy comandos y az role o el 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 el Azure Portal.
  7. Compruebe los bloqueos de recursos del grupo de nodos. Puede usar el az lock comando o el 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 los clústeres de AKS y los nodos. Azure Monitor para contenedores puede supervisar el estado, el rendimiento y la disponibilidad del clúster y el nodo. También puede usarlo para ver los registros de contenedor, los registros de kubelet y los registros de diagnóstico de arranque del 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 usarla para generar una solicitud de soporte técnico con los registros recopilados adjuntos.

  • Diagnósticos de AKS

    Esta herramienta ejecuta una serie de comprobaciones en los 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 de clústeres. También puede usarla 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.