

 **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
<a name="node-health-nma"></a>

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](node-repair.md).

El código fuente del agente de supervisión de nodos EKS está publicado en GitHub en el repositorio [aws/eks-node-monitoring-agent](https://github.com/aws/eks-node-monitoring-agent).

## Problemas de estado de los nodos
<a name="node-health-issues"></a>

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](learn-status-conditions.md#status-node-conditions).
+ 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](learn-status-conditions.md#status-node-events).

## Problemas de estado de los nodos AcceleratedHardware
<a name="node-health-AcceleratedHardware"></a>

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
<a name="nvidia-xid-codes"></a>

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 con`dmesg | grep -i nvrm`.

Para obtener más información sobre los errores de XID, consulte [Errores de Xid](https://docs.nvidia.com/deploy/xid-errors/index.html#topic_5_1) 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](https://docs.nvidia.com/deploy/gpu-debug-guidelines/index.html#understanding-xid-messages) 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
<a name="node-health-ContainerRuntime"></a>

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
<a name="node-health-Kernel"></a>

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
<a name="node-health-Networking"></a>

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
<a name="node-health-Storage"></a>

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
<a name="node-monitoring-agent-configure"></a>

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](https://github.com/aws/eks-node-monitoring-agent/blob/main/charts/eks-node-monitoring-agent/values.yaml) 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](https://github.com/aws/eks-node-monitoring-agent/blob/main/charts/eks-node-monitoring-agent/values.yaml) 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](https://github.com/aws/containers-roadmap/issues/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
```