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 ( |
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 esNvidiaXID[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
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 |
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 |
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 |
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 |
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 |
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 |
Ninguno |
|
UnexpectedRejectRule |
Evento |
Se encontró una regla inesperada de |
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 |
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 |
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
| Opción de configuración | Descripción |
|---|---|
|
|
Solicitud de recursos de CPU para el agente de supervisión. |
|
|
Solicitud de recursos de memoria para el agente de supervisión. |
|
|
Límite de recursos de CPU para el agente de supervisión. |
|
|
Límite de recursos de memoria para el agente de supervisión. |
|
|
Tolerancias para programar el agente de supervisión en nodos con taint. |
|
|
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
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 |
|---|---|
|
|
Solicitud de recursos de CPU para el agente de DCGM. |
|
|
Solicitud de recursos de memoria para el agente de DCGM. |
|
|
Límite de recursos de CPU para el agente de DCGM. |
|
|
Límite de recursos de memoria para el agente de DCGM. |
|
|
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