Node Problem Detector es una biblioteca de código abierto que monitoriza el estado de los nodos y detecta problemas habituales de los nodos, como problemas de hardware, del kernel o del tiempo de ejecución de los contenedores. En Google Distributed Cloud, se ejecuta como un servicio systemd en cada nodo.
A partir de la versión 1.10.0 de Google Distributed Cloud, Node Problem Detector está habilitado de forma predeterminada.
Si necesitas más ayuda, ponte en contacto con el servicio de atención al cliente de Cloud. También puedes consultar la sección Obtener asistencia para obtener más información sobre los recursos de asistencia, incluidos los siguientes:
- Requisitos para abrir un caso de asistencia.
- Herramientas para ayudarte a solucionar problemas, como la configuración de tu entorno, los registros y las métricas.
- Componentes admitidos.
¿Qué problemas detecta?
Node Problem Detector puede detectar los siguientes tipos de problemas:
- Problemas con el tiempo de ejecución del contenedor, como los daemons del tiempo de ejecución que no responden
- Problemas de hardware, como fallos de la CPU, la memoria o el disco
- Problemas del kernel, como condiciones de bloqueo del kernel o sistemas de archivos dañados
Se ejecuta en un nodo e informa de los problemas al servidor de la API de Kubernetes como NodeCondition
o como Event
.
Un NodeCondition
es un problema que impide que un nodo ejecute pods, mientras que un Event
es un problema temporal que tiene un efecto limitado en los pods, pero que se considera lo suficientemente importante como para comunicarlo.
En la siguiente tabla se describen los NodeConditions
detectados por Node Problem Detector y si se pueden reparar automáticamente o no:
Condición | Motivo | Reparación automática admitida1 |
---|---|---|
KernelDeadlock |
Los procesos del kernel se quedan bloqueados esperando a que otros procesos del kernel liberen los recursos necesarios. | No |
ReadonlyFilesystem |
El clúster no puede escribir en el sistema de archivos debido a un problema, como que el disco esté lleno. | No |
FrequentKubeletRestart |
El kubelet se reinicia con frecuencia, lo que impide que el nodo ejecute pods de forma eficaz. | No |
FrequentDockerRestart |
El daemon de Docker se ha reiniciado más de 5 veces en 20 minutos. | No |
FrequentContainerdRestart |
El tiempo de ejecución del contenedor se ha reiniciado más de 5 veces en 20 minutos. | No |
FrequentUnregisterNetDevice |
El nodo está experimentando un registro frecuente de dispositivos de red. | No |
KubeletUnhealthy |
El nodo no funciona correctamente o no responde al plano de control. | No |
ContainerRuntimeUnhealthy |
El tiempo de ejecución del contenedor no funciona correctamente, lo que impide que los pods se ejecuten o se programen en el nodo. | No |
CorruptDockerOverlay2 |
Hay problemas o incoherencias en el sistema de archivos en el directorio del controlador de almacenamiento overlay2 de Docker. | No |
OrphanContainers 2 |
Se ha eliminado un pod específico de un contenedor, pero el contenedor correspondiente sigue en el nodo. | No |
FailedCgroupRemoval 2 |
Algunos cgroups están en estado inactivo. | Sí |
1 En las versiones 1.32 y posteriores, se puede reparar automáticamente los problemas detectados en determinadas condiciones.
2 Compatible con las versiones 1.32 y posteriores.
Estos son algunos ejemplos de los tipos de Events
que notifica Node Problem Detector:
Warning TaskHung node/vm-worker-1-user-a12fabb4a99cb92-ddfce8832fd90f6f.lab.anthos kernel: task docker:7 blocked for more than 300 seconds.
Warning KernelOops node/vm-worker-1-user-a12fabb4a99cb92-ddfce8832fd90f6f.lab.anthos kernel: BUG: unable to handle kernel NULL pointer dereference at 00x0.
¿Qué problemas repara?
A partir de la versión 1.32, cuando Node Problem Detector detecta determinados NodeConditions
, puede reparar automáticamente el problema correspondiente en el nodo. Desde la versión 1.32,
el único NodeCondition
que admite la reparación automática es
FailedCgroupRemoval
.
Cómo ver los problemas detectados
Ejecuta el siguiente comando kubectl describe
para buscar NodeConditions
y Events
:
kubectl describe node NODE_NAME \
--kubeconfig=KUBECONFIG
Haz los cambios siguientes:
NODE_NAME
: el nombre del nodo que estás comprobando.KUBECONFIG
: la ruta del archivo kubeconfig del clúster.
Cómo habilitar e inhabilitar Node Problem Detector
De forma predeterminada, Node Problem Detector está habilitado, pero se puede inhabilitar en el recurso node-problem-detector-config
ConfigMap. A menos que lo inhabilite explícitamente, Node Problem Detector monitoriza continuamente los nodos para detectar condiciones específicas que indiquen problemas en el nodo.
Para inhabilitar Node Problem Detector en un clúster determinado, sigue estos pasos:
Edita el recurso
node-problem-detector-config
ConfigMap:kubectl edit configmap node-problem-detector-config \ --kubeconfig=KUBECONFIG \ --namespace=CLUSTER_NAMESPACE
Haz los cambios siguientes:
KUBECONFIG
: la ruta del archivo kubeconfig del clúster.CLUSTER_NAMESPACE
: el espacio de nombres del clúster en el que quieras habilitar Node Problem Detector.
Este comando inicia automáticamente un editor de texto en el que puedes editar el recurso
node-problem-detector-config
.Asigna el valor
false
adata.enabled
en la definición del recursonode-problem-detector-config
.apiVersion: v1 kind: ConfigMap metadata: creationTimestamp: "2025-04-19T21:36:44Z" name: node-problem-detector-config ... data: enabled: "false"
Inicialmente, el ConfigMap
node-problem-detector-config
no tiene un campodata
, por lo que puede que tengas que añadirlo.Para actualizar el recurso, guarda los cambios y cierra el editor.
Para volver a habilitar Node Problem Detector, sigue los pasos anteriores, pero define data.enabled
como
true
en la definición de recursos node-problem-detector-config
.
Cómo habilitar e inhabilitar la reparación automática
A partir de la versión 1.32, Node Problem Detector comprueba si hay NodeConditions
específicos y repara automáticamente el problema correspondiente en el nodo. De forma predeterminada, la reparación automática está habilitada para los NodeConditions
compatibles, pero se puede inhabilitar en el recurso node-problem-detector-config
ConfigMap.
Para inhabilitar el comportamiento de reparación automática en un clúster determinado, siga estos pasos:
Edita el recurso
node-problem-detector-config
ConfigMap:kubectl edit configmap node-problem-detector-config \ --kubeconfig=KUBECONFIG \ --namespace=CLUSTER_NAMESPACE
Haz los cambios siguientes:
KUBECONFIG
: la ruta del archivo kubeconfig del clúster.CLUSTER_NAMESPACE
: el espacio de nombres del clúster en el que quieras habilitar Node Problem Detector.
Este comando inicia automáticamente un editor de texto en el que puedes editar el recurso
node-problem-detector-config
.Asigna el valor
true
adata.check-only
en la definición del recursonode-problem-detector-config
.apiVersion: v1 kind: ConfigMap metadata: creationTimestamp: "2025-04-19T21:36:44Z" name: node-problem-detector-config ... data: enabled: "true" check-only: "true"
Inicialmente, el ConfigMap
node-problem-detector-config
no tiene un campodata
, por lo que puede que tengas que añadirlo. Si se definecheck-only
como"true"
, se inhabilita la reparación automática para todas las condiciones admitidas.Para actualizar el recurso, guarda los cambios y cierra el editor.
Para volver a habilitar la reparación automática en todos los NodeConditions
que la admitan, asigna el valor "false"
a data.check-only
en el ConfigMap node-problem-detector-config
.
Cómo detener y reiniciar Node Problem Detector
Node Problem Detector se ejecuta como un servicio systemd
en cada nodo. Para gestionar Node Problem Detector en un nodo determinado, usa SSH para acceder al nodo y ejecuta los siguientes comandos systemctl
.
Para inhabilitar Node Problem Detector, ejecuta el siguiente comando:
systemctl stop node-problem-detector
Para reiniciar Node Problem Detector, ejecuta el siguiente comando:
systemctl restart node-problem-detector
Para comprobar si Node Problem Detector se está ejecutando en un nodo concreto, ejecuta el siguiente comando:
systemctl is-active node-problem-detector
Funciones no compatibles
Google Distributed Cloud no admite las siguientes personalizaciones de Node Problem Detector:
- Exportar informes de Node Problem Detector a otros sistemas de monitorización, como Stackdriver o Prometheus.
- Personalizar qué
NodeConditions
oEvents
buscar. - Ejecutar secuencias de comandos de monitorización definidas por el usuario.
Siguientes pasos
Si necesitas más ayuda, ponte en contacto con el servicio de atención al cliente de Cloud. También puedes consultar la sección Obtener asistencia para obtener más información sobre los recursos de asistencia, incluidos los siguientes:
- Requisitos para abrir un caso de asistencia.
- Herramientas para ayudarte a solucionar problemas, como la configuración de tu entorno, los registros y las métricas.
- Componentes admitidos.