Detecte problemas de estado de los nodos con el agente de supervisión de nodos EKS - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Detecte problemas de estado de los nodos con el agente de supervisión de nodos EKS

En este tema se detallan los problemas de estado de los nodos detectados por el agente de supervisión de nodos de EKS, cómo estos problemas se manifiestan como condiciones o eventos de los nodos y cómo configurar el agente de supervisión de nodos.

El agente de supervisión de nodos de EKS se puede utilizar con o sin la reparación automática de nodos de EKS. Para obtener más información sobre la reparación automática de nodos de EKS, consulte Reparación automática de nodos en clústeres de EKS.

El código fuente del agente de supervisión de nodos EKS está publicado en GitHub en el repositorio aws/eks-node-monitoring-agent.

Problemas de estado de los nodos

En las siguientes tablas se describen los problemas de estado de los nodos que el agente de supervisión de nodos puede detectar. Existen dos tipos de problemas:

  • Condición: un problema terminal que requiere una acción correctiva, como la sustitución o el reinicio de la instancia. Cuando la reparación automática está habilitada, Amazon EKS realizará una acción de reparación, ya sea la sustitución o el reinicio del nodo. Para obtener más información, consulte Condiciones de nodos.

  • Evento: un problema temporal o una configuración de nodo subóptima. No se realizará ninguna acción de reparación automática. Para obtener más información, consulte Eventos de nodos.

Problemas de estado de los nodos AcceleratedHardware

La condición de supervisión es AcceleratedHardwareReady para los problemas de la tabla siguiente que tengan una gravedad de “Estado”. Los eventos y condiciones de la siguiente tabla se refieren a problemas de estado de los nodos relacionados con NVIDIA y Neuron.

Nombre Gravedad Descripción Acción de reparación

DCGMDiagnosticFailure

Condición

Se produjo un error en un caso de prueba del conjunto de pruebas de diagnóstico activo de DCGM.

Ninguno

DCGMError

Condición

Se perdió la conexión con el proceso host del DCGM o no fue posible establecerla.

Ninguno

DCGMFieldError[Código]

Evento

DCGM detectó degradación de la GPU mediante un identificador de campo.

Ninguno

DCGMHealthCode[Código]

Evento

Una comprobación de estado del DCGM falló de manera no fatal.

Ninguno

DCGMHealthCode[Código]

Condición

Una comprobación de estado del DCGM falló de manera fatal.

Ninguno

NeuronDMAError

Condición

Un motor de DMA encontró un error no recuperable.

Reemplazar

NeuronHBMUncorrectableError

Condición

Un HBM encontró un error no corregible y generó resultados incorrectos.

Reemplazar

NeuronNCUncorrectableError

Condición

Se detectó un error de memoria incorregible en Neuron Core.

Reemplazar

NeuronSRAMUncorrectableError

Condición

Una SRAM integrada en el chip encontró un error de paridad y generó resultados incorrectos.

Reemplazar

NvidiaDeviceCountMismatch

Evento

La cantidad de GPU visibles a través de NVML no coincide con el número de dispositivos de NVIDIA del sistema de archivos.

Ninguno

NvidiaDoubleBitError

Condición

El controlador de la GPU produjo un error de doble bit.

Reemplazar

NvidiaNCCLError

Evento

Se ha producido un error segfault en NVIDIA Collective Communications Library (libnccl).

Ninguno

NvidiaNVLinkError

Condición

El controlador de la GPU notificó errores de NVLink.

Reemplazar

NvidiaPCIeError

Evento

Las repeticiones de PCIe se activaron para recuperarse de errores de transmisión.

Ninguno

NvidiaPageRetirement

Evento

El controlador de la GPU ha marcado una página de memoria para su retirada. Esto puede ocurrir si hay un único error de doble bit o si se encuentran dos errores de bit único en la misma dirección.

Ninguno

NvidiaPowerError

Evento

El uso de energía de las GPU superó los umbrales permitidos.

Ninguno

NvidiaThermalError

Evento

El estado térmico de las GPU superó los umbrales permitidos.

Ninguno

NvidiaXID[Código]Error

Condición

Se ha producido un error crítico de la GPU.

Reemplazar o reiniciar

NvidiaXID[Code]Warning

Evento

Se ha producido un error no crítico de la GPU.

Ninguno

Códigos de error de NVIDIA XID

El agente de supervisión de nodos detecta los errores de NVIDIA XID en los registros del kernel de la GPU. Los errores XID se dividen en dos categorías:

  • Códigos XID conocidos: errores críticos que establecen una condición de nodo (AcceleratedHardwareReady=False) y desencadenan la reparación automática cuando están habilitados. Motivo por el que el formato del código es NvidiaXID[Code]Error. Es posible que los códigos XID conocidos que detecta el agente de supervisión de nodos EKS no representen la lista completa de códigos de NVIDIA XID que requieren acciones de reparación.

  • Códigos XID desconocidos: se registran únicamente como eventos de Kubernetes. No desencadenan la reparación automática. Motivo por el que el formato del código es NvidiaXID[Code]Warning. Para investigar errores XID desconocidos, revise los registros del kernel condmesg | grep -i nvrm.

Para obtener más información sobre los errores de XID, consulte Errores de Xid en la documentación sobre la implementación y administración de las GPU de NVIDIA. Para obtener más información sobre los mensajes XID individuales, consulte Comprensión de los mensajes Xid en la documentación sobre implementación y administración de GPU de NVIDIA.

La siguiente tabla muestra los códigos XID más conocidos, sus significados y la acción de reparación de nodos predeterminada si está habilitada.

Código XID Descripción Acción de reparación

13

Excepción en el motor gráfico: se produjo un error en el motor gráfico de la GPU, normalmente provocado por problemas de software o errores de controlador.

Reboot

31

Error de página en la memoria de la GPU: una aplicación intentó acceder a la memoria de la GPU que no está asignada ni accesible.

Reboot

48

Error de ECC de doble bit: se produjo un error de doble bit incorregible en la memoria de la GPU, lo que indica una posible degradación del hardware.

Reboot

63

Evento de reasignación de la memoria de la GPU: el controlador de la GPU reasignó una parte de la memoria de la GPU debido a errores detectados. Suele ser recuperable.

Reboot

64

Error al reasignar la memoria de la GPU: la GPU no pudo reasignar la memoria defectuosa, lo que indica problemas de hardware.

Reboot

74

Error de NVLink: se produjo un error en la interconexión NVLink de alta velocidad entre las GPU.

Reemplazar

79

La GPU se ha caído del bus: ya no se puede acceder a la GPU a través de PCIe, lo que suele indicar un fallo de hardware o un problema de alimentación.

Reemplazar

94

Error de memoria contenida: se produjo un error de memoria, pero estaba contenida y no afectó a otras aplicaciones.

Reboot

95

Error de memoria no contenida: se produjo un error de memoria que puede haber afectado a otras aplicaciones o a la memoria del sistema.

Reboot

119

Tiempo de espera del RPC de GSP: se agotó el tiempo de espera de la comunicación con el procesador del sistema de la GPU, posiblemente debido a problemas de firmware.

Reemplazar

120

Error GSP: se produjo un error en el procesador del sistema de la GPU.

Reemplazar

121

Error C2C: se produjo un error en la interconexión chip a chip (utilizada en las GPU de varios chips).

Reemplazar

140

Error de ECC no recuperado: un error de ECC escapó a la contención y puede haber dañado los datos.

Reemplazar

Para ver las condiciones actuales de los nodos relacionadas con el estado de la GPU, ejecute el siguiente comando.

kubectl get nodes -o custom-columns='NAME:.metadata.name,ACCELERATOR_READY:.status.conditions[?(@.type=="AcceleratedHardwareReady")].status,REASON:.status.conditions[?(@.type=="AcceleratedHardwareReady")].reason'

Para ver los eventos relacionados con XID en el clúster, ejecute uno de los siguientes comandos.

kubectl get events | grep -i "NvidiaXID"

Problemas de estado de los nodos ContainerRuntime

La condición de supervisión es ContainerRuntimeReady para los problemas de la tabla siguiente que tengan una gravedad de “Estado”.

Nombre Gravedad Descripción Acción de reparación

ContainerRuntimeFailed

Evento

El tiempo de ejecución del contenedor no pudo crear un contenedor, lo que probablemente está relacionado con cualquier problema reportado si ocurre de manera repetida.

Ninguno

DeprecatedContainerdConfiguration

Evento

Recientemente, se incorporó al nodo a través de containerd una imagen de contenedor con un manifiesto de imagen obsoleto (versión 2, esquema 1).

Ninguno

KubeletFailed

Evento

El kubelet entró en un estado de fallo.

Ninguno

LivenessProbeFailures

Evento

Se detectó una falla en la sonda de actividad, lo que podría indicar problemas en el código de la aplicación o valores de tiempo de espera insuficientes si ocurre de manera repetida.

Ninguno

PodStuckTerminating

Condición

Un pod está o estuvo atascado al intentar terminar durante un tiempo excesivo, lo que puede ser causado por errores en CRI que impiden la progresión del estado del pod.

Reemplazar

ReadinessProbeFailures

Evento

Se detectó una falla en la sonda de preparación, lo que podría indicar problemas en el código de la aplicación o valores de tiempo de espera insuficientes si ocurre de manera repetida.

Ninguno

[Nombre]RepeatedRestart

Evento

Una unidad systemd se reinicia con frecuencia.

Ninguno

ServiceFailedToStart

Evento

No se pudo iniciar una unidad de systemd.

Ninguno

Problemas de estado de los nodos del núcleo

La condición de supervisión es KernelReady para los problemas de la tabla siguiente que tengan una gravedad de “Estado”.

Nombre Gravedad Descripción Acción de reparación

AppBlocked

Evento

La tarea ha estado bloqueada durante un largo período para su programación, generalmente debido a estar bloqueada en la entrada o salida.

Ninguno

AppCrash

Evento

Se colapsó una aplicación del nodo.

Ninguno

ApproachingKernelPidMax

Evento

La cantidad de procesos está próxima a alcanzar la cantidad máxima de PID disponibles según la configuración de kernel.pid_max actual. Una vez alcanzado este límite, no se podrán inicializar más procesos.

Ninguno

ApproachingMaxOpenFiles

Evento

La cantidad de archivos abiertos está próxima a la cantidad máxima de archivos abiertos posibles dada la configuración actual del núcleo. Una vez alcanzado este límite, no se podrán abrir nuevos archivos.

Ninguno

ConntrackExceededKernel

Evento

El seguimiento de conexiones excedió el límite máximo del núcleo, lo que impidió el establecimiento de nuevas conexiones y podría ocasionar la pérdida de paquetes.

Ninguno

ExcessiveZombieProcesses

Evento

Los procesos que no pueden ser completamente recuperados se acumulan en grandes cantidades, lo que indica problemas en la aplicación y podría llevar a alcanzar los límites de procesos del sistema.

Ninguno

ForkFailedOutOfPIDs

Condición

Una llamada a fork o exec ha fallado debido a que el sistema se ha quedado sin identificadores de proceso o memoria, lo cual podría ser causado por procesos zombis o agotamiento de la memoria física.

Reemplazar

KernelBug

Evento

Se detectó un error en el núcleo y fue reportado por el propio núcleo de Linux, aunque esto a veces puede ser causado por nodos con un alto uso de CPU o memoria que provocan retrasos en el procesamiento de eventos.

Ninguno

LargeEnvironment

Evento

La cantidad de variables de entorno de este proceso es mayor de lo esperado, lo que se podría deber a la existencia de muchos servicios con enableServiceLinks configurado en verdadero, lo que podría provocar problemas de rendimiento.

Ninguno

RapidCron

Evento

Un trabajo cron se ejecuta con una frecuencia inferior a cinco minutos en este nodo, lo que podría afectar el rendimiento si el trabajo consume recursos significativos.

Ninguno

SoftLockup

Evento

La CPU se detuvo durante un periodo determinado.

Ninguno

Problemas de estado de los nodos de red

La condición de supervisión es NetworkingReady para los problemas de la tabla siguiente que tengan una gravedad de “Estado”.

Nombre Gravedad Descripción Acción de reparación

BandwidthInExceeded

Evento

Los paquetes se han puesto en cola o se han descartado porque el ancho de banda agregado de entrada ha superado el máximo para la instancia.

Ninguno

BandwidthOutExceeded

Evento

Los paquetes se han puesto en cola o se han descartado porque el ancho de banda agregado de salida ha superado el máximo para la instancia.

Ninguno

ConntrackExceeded

Evento

El seguimiento de conexiones excedió el límite máximo de la instancia, lo que impidió el establecimiento de nuevas conexiones, lo que podría ocasionar la pérdida de paquetes.

Ninguno

EFAErrorMetric

Evento

Las métricas del controlador EFA muestran que hay una interfaz con una degradación del rendimiento.

Ninguno

IPAMDInconsistentState

Evento

El estado del punto de control de IPAMD en el disco no refleja las IP en el tiempo de ejecución del contenedor.

Ninguno

IPAMDNoIPs

Evento

IPAMD se quedó sin direcciones IP.

Ninguno

IPAMDNotReady

Condición

IPAMD no se puede conectar al servidor de la API.

Reemplazar

IPAMDNotRunning

Condición

El proceso de CNI de Amazon VPC no se encontró en ejecución.

Reemplazar

IPAMDRepeatedlyRestart

Evento

Se han producido múltiples reinicios en el servicio IPAMD.

Ninguno

InterfaceNotRunning

Condición

Esta interfaz parece no estar en ejecución o existen problemas de red.

Reemplazar

InterfaceNotUp

Condición

Parece que esta interfaz no está activa o que existen problemas de red.

Reemplazar

KubeProxyNotReady

Evento

Kube-proxy no pudo ver ni enumerar los recursos.

Ninguno

LinkLocalExceeded

Evento

Se descartaron paquetes porque los paquetes por segundo (PPS) del tráfico hacia los servicios proxy locales excedieron el máximo de la interfaz de red.

Ninguno

MACAddressPolicyMisconfigured

Evento

La configuración del enlace systemd-networkd tiene un valor MACAddressPolicy incorrecto.

Ninguno

MissingDefaultRoutes

Evento

Faltan reglas de ruta predeterminadas.

Ninguno

MissingIPRoutes

Evento

Faltan rutas para las IP de los pods.

Ninguno

MissingIPRules

Evento

Faltan reglas para las IP de los pods.

Ninguno

MissingLoopbackInterface

Condición

La interfaz de bucle de retorno falta en esta instancia, lo que provoca fallos en los servicios que dependen de la conectividad local.

Reemplazar

NetworkSysctl

Evento

La configuración de sysctl de red de este nodo es potencialmente incorrecta.

Ninguno

PPSExceeded

Evento

Los paquetes han sido puestos en cola o descartados porque los paquetes por segundo (PPS) bidireccionales excedieron el máximo permitido para la instancia.

Ninguno

PortConflict

Evento

Si un pod utiliza hostPort, puede escribir reglas de iptables que sobrescriban los puertos ya asignados del host, lo que podría impedir el acceso del servidor de la API al kubelet.

Ninguno

UnexpectedRejectRule

Evento

Se encontró una regla inesperada de REJECT o DROP en las iptables, lo que podría bloquear el tráfico esperado.

Ninguno

Problemas de estado en el nodo de almacenamiento

La condición de supervisión es StorageReady para los problemas de la tabla siguiente que tengan una gravedad de “Estado”.

Nombre Gravedad Descripción Acción de reparación

EBSInstanceIOPSExceeded

Evento

Se ha superado el máximo de IOPS de la instancia.

Ninguno

EBSInstanceThroughputExceeded

Evento

Se ha superado el rendimiento máximo de la instancia.

Ninguno

EBSVolumeIOPSExceeded

Evento

Se ha superado el máximo de IOPS para un volumen de EBS concreto.

Ninguno

EBSVolumeThroughputExceeded

Evento

Se ha superado el rendimiento máximo de un volumen de Amazon EBS concreto.

Ninguno

EtcHostsMountFailed

Evento

El montaje del /etc/hosts generado por el kubelet falló debido al remonte de /var/lib/kubelet/pods por parte de userdata durante la operación del kubelet-container.

Ninguno

IODelays

Evento

Se detectó un retraso en la entrada o salida de un proceso, lo que podría indicar un aprovisionamiento insuficiente de recursos de entrada y salida si es excesivo.

Ninguno

KubeletDiskUsageSlow

Evento

El kubelet informa de un uso lento del disco al intentar acceder al sistema de archivos. Esto podría indicar que no hay suficientes entradas y salidas en el disco o problemas con el sistema de archivos.

Ninguno

XFSSmallAverageClusterSize

Evento

El tamaño medio del clúster de XFS es pequeño, lo que indica una fragmentación excesiva del espacio libre. De este modo, se puede impedir la creación de archivos a pesar de que haya nodos de indexación o espacio libre disponibles.

Ninguno

Configuración del agente de supervisión de nodos

El agente de supervisión de nodos EKS se implementa como DaemOnset. Al implementarlo como un complemento de EKS, puede personalizar la instalación con los siguientes valores de configuración. Para ver las configuraciones predeterminadas, consulte el gráfico de Helm del agente de supervisión de nodos de EKS.

Opción de configuración Descripción

monitoringAgent.resources.requests.cpu

Solicitud de recursos de CPU para el agente de supervisión.

monitoringAgent.resources.requests.memory

Solicitud de recursos de memoria para el agente de supervisión.

monitoringAgent.resources.limits.cpu

Límite de recursos de CPU para el agente de supervisión.

monitoringAgent.resources.limits.memory

Límite de recursos de memoria para el agente de supervisión.

monitoringAgent.tolerations

Tolerancias para programar el agente de supervisión en nodos con taint.

monitoringAgent.additionalArgs

Argumentos de línea de comandos opcionales que se trasladarán al agente de supervisión único.

nota

Puede configurar hostname-override y verbosity como monitoringAgent.additionalArgs con los complementos de EKS o la instalación de Helm. Actualmente no se pueden personalizar los agentes de supervisión de nodos probe-address (8002) o metrics-address (8003) mediante argumentos adicionales con los complementos de EKS o la instalación de Helm.

El agente de supervisión de nodos incluye un componente de servidor NVIDIA DCGM (administrador de GPU del centro de datos) (nv-hostengine) para supervisar las GPU de NVIDIA. Este componente solo se ejecuta en los nodos que son del tipo de instancia de GPU de NVIDIA, como muestra nodeAffinity en el gráfico de Helm del agente. No puede usar una instalación DCGM de NVIDIA existente con el agente de supervisión de nodos de EKS. Si necesita esta funcionalidad, envíenos sus comentarios sobre la hoja de ruta de EKS en GitHub, problema número 2763.

Al implementar el agente de supervisión de nodos de EKS como un complemento de EKS, puede personalizar la instalación de DCGM de NVIDIA con los siguientes valores de configuración.

Opción de configuración Descripción

dcgmAgent.resources.requests.cpu

Solicitud de recursos de CPU para el agente de DCGM.

dcgmAgent.resources.requests.memory

Solicitud de recursos de memoria para el agente de DCGM.

dcgmAgent.resources.limits.cpu

Límite de recursos de CPU para el agente de DCGM.

dcgmAgent.resources.limits.memory

Límite de recursos de memoria para el agente de DCGM.

dcgmAgent.tolerations

Tolerancias para programar el agente de DCGM en nodos con taint.

Puede usar los siguientes comandos de la AWS CLI para obtener información útil sobre las versiones y el esquema del complemento de EKS del agente de supervisión de nodos EKS.

Obtenga la última versión del complemento de agente para su versión de Kubernetes. Sustituya 1.35 por su versión de Kubernetes.

aws eks describe-addon-versions \ --addon-name eks-node-monitoring-agent \ --kubernetes-version 1.35 \ --query='addons[].addonVersions[].addonVersion'

Obtenga el esquema de complementos del agente compatible con los complementos de EKS. Sustituya v1.5.1-eksbuild.1 por su versión de agente.

aws eks describe-addon-configuration \ --addon-name eks-node-monitoring-agent \ --addon-version v1.5.1-eksbuild.1