Le détecteur de problème de nœud est une bibliothèque Open Source qui surveille l'état des nœuds et détecte les problèmes de nœuds courants, tels que des problèmes d'exécution de matériel, de noyau ou de conteneur. Dans Google Distributed Cloud, il s'exécute en tant que service systemd sur chaque nœud.
À partir de la version 1.10.0 de Google Distributed Cloud, le détecteur de problème de nœud est activé par défaut.
Si vous avez besoin d'une aide supplémentaire, contactez Cloud Customer Care. Vous pouvez également consulter Obtenir de l'aide pour en savoir plus sur les ressources d'assistance, y compris en ce qui concerne les thématiques suivantes :
- Conditions requises pour ouvrir une demande d'assistance
- Outils pour vous aider à résoudre les problèmes liés à la configuration de votre environnement, les journaux et les métriques
- Composants acceptés.
Quels sont les problèmes détectés ?
Le détecteur de problèmes de nœud peut détecter les types de problèmes suivants :
- Problèmes d'exécution du conteneur, tels que des daemons d'exécution qui ne répondent pas
- Problèmes matériels, tels que des défaillances de processeur, de mémoire ou de disque
- Problèmes de noyau, tels que des conditions d'interblocage du noyau ou des systèmes de fichiers corrompus
Il s'exécute sur un nœud et signale les problèmes au serveur d'API Kubernetes
en tant que NodeCondition
ou en tant qu'Event.
Un NodeCondition est un problème qui empêche un nœud d'exécuter des pods, tandis qu'un Event est un problème temporaire qui a un effet limité sur les pods, mais qui est tout de même suffisamment important pour être signalé.
Le tableau suivant décrit les NodeConditions détectés par le détecteur de problème de nœud et indique s'ils peuvent être réparés automatiquement :
| Condition | Motif | Réparation automatique acceptée1 |
|---|---|---|
KernelDeadlock |
Les processus du noyau sont bloqués en attendant que d'autres processus du noyau libèrent les ressources requises. | Non |
ReadonlyFilesystem |
Le cluster ne peut pas écrire dans le système de fichiers en raison d'un problème, par exemple un disque plein. | Non |
FrequentKubeletRestart |
Le kubelet redémarre fréquemment, ce qui empêche le nœud d'exécuter efficacement les pods. | Non |
FrequentDockerRestart |
Le daemon Docker a redémarré plus de cinq fois en 20 minutes. | Non |
FrequentContainerdRestart |
L'environnement d'exécution du conteneur a redémarré plus de cinq fois en 20 minutes. | Non |
FrequentUnregisterNetDevice |
Le nœud rencontre fréquemment des problèmes de désenregistrement des périphériques réseau. | Non |
CorruptDockerOverlay2 |
Des problèmes ou des incohérences de système de fichiers existent dans le répertoire du pilote de stockage Docker overlay2. | Non |
OrphanContainers2 |
Un pod spécifique à un conteneur a été supprimé, mais le conteneur correspondant existe toujours dans le nœud. | Non |
ContainerRuntimeUnhealthy |
L'environnement d'exécution du conteneur ne fonctionne pas correctement, ce qui empêche les pods de s'exécuter ou de s'exécuter sur le nœud. | Oui |
FailedCgroupRemoval2 |
Certains cgroups sont à l'état gelé. | Oui |
KubeletUnhealthy |
Le nœud ne fonctionne pas correctement ou ne répond pas au plan de contrôle. | Oui |
1 Pour les versions 1.32 et ultérieures, la possibilité de réparer automatiquement les problèmes détectés est disponible pour certaines conditions.
2 Compatible avec les versions 1.32 et ultérieures.
Voici quelques exemples de types d'Events signalés par le détecteur de problème de nœud :
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.
Quels sont les problèmes réparés ?
À partir de la version 1.32, lorsque le détecteur de problème de nœud détecte certaines NodeConditions, il peut réparer automatiquement le problème correspondant sur le nœud. Les NodeConditions suivantes sont compatibles avec la réparation automatique :
ContainerRuntimeUnhealthyFailedCgroupRemovalKubeletUnhealthy
Comment afficher les problèmes détectés
Exécutez la commande kubectl describe suivante pour rechercher les NodeConditions et les Events :
kubectl describe node NODE_NAME \
--kubeconfig=KUBECONFIG
Remplacez les éléments suivants :
NODE_NAME: nom du nœud que vous vérifiez.KUBECONFIG: chemin d'accès au fichier kubeconfig du cluster.
Comment activer et désactiver le détecteur de problème de nœud
Par défaut, le détecteur de problème de nœud est activé, mais il peut être désactivé dans la ressource ConfigMap node-problem-detector-config. Sauf si vous le désactivez explicitement, le détecteur de problème de nœud surveille en permanence les nœuds pour détecter des conditions spécifiques qui indiquent des problèmes pour le nœud.
Pour désactiver le détecteur de problème de nœud sur un cluster donné, procédez comme suit :
Modifiez la ressource ConfigMap
node-problem-detector-config:kubectl edit configmap node-problem-detector-config \ --kubeconfig=KUBECONFIG \ --namespace=CLUSTER_NAMESPACERemplacez les éléments suivants :
KUBECONFIG: chemin d'accès au fichier kubeconfig du cluster.CLUSTER_NAMESPACE: espace de noms du cluster dans lequel vous souhaitez activer le détecteur de problème de nœud.
Cette commande démarre automatiquement un éditeur de texte dans lequel vous pouvez modifier la ressource
node-problem-detector-config.Définissez
data.enabledsurfalsedans la définition de ressourcenode-problem-detector-config.apiVersion: v1 kind: ConfigMap metadata: creationTimestamp: "2025-04-19T21:36:44Z" name: node-problem-detector-config ... data: enabled: "false"Initialement, le fichier ConfigMap
node-problem-detector-configne comporte pas de champdata. Vous devrez peut-être l'ajouter.Pour mettre à jour la ressource, enregistrez vos modifications et fermez l'éditeur.
Pour réactiver le détecteur de problème de nœud, suivez les étapes précédentes, mais définissez data.enabled sur true dans la définition de ressource node-problem-detector-config.
Comment activer et désactiver la réparation automatique
À partir de la version 1.32, le détecteur de problème de nœud recherche des NodeConditions spécifiques et répare automatiquement le problème correspondant sur le nœud. Par défaut, la réparation automatique est activée pour les NodeConditions compatibles, mais elle peut être désactivée dans la ressource ConfigMap node-problem-detector-config.
Pour désactiver le comportement de réparation automatique sur un cluster donné, procédez comme suit :
Modifiez la ressource ConfigMap
node-problem-detector-config:kubectl edit configmap node-problem-detector-config \ --kubeconfig=KUBECONFIG \ --namespace=CLUSTER_NAMESPACERemplacez les éléments suivants :
KUBECONFIG: chemin d'accès au fichier kubeconfig du cluster.CLUSTER_NAMESPACE: espace de noms du cluster dans lequel vous souhaitez activer le détecteur de problème de nœud.
Cette commande démarre automatiquement un éditeur de texte dans lequel vous pouvez modifier la ressource
node-problem-detector-config.Définissez
data.check-onlysurtruedans la définition de ressourcenode-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"Initialement, le fichier ConfigMap
node-problem-detector-configne comporte pas de champdata. Vous devrez peut-être l'ajouter. Définircheck-onlysur"true"désactive la réparation automatique pour toutes les conditions compatibles.Pour mettre à jour la ressource, enregistrez vos modifications et fermez l'éditeur.
Pour réactiver la réparation automatique pour tous les NodeConditions compatibles, définissez
data.check-only sur "false" dans le fichier ConfigMap node-problem-detector-config.
Comment arrêter et redémarrer le détecteur de problème de nœud
Le détecteur de problème de nœud s'exécute en tant que service systemd sur chaque nœud. Pour gérer le détecteur de problème de nœud pour un nœud donné, utilisez SSH pour accéder au nœud et exécutez les commandes systemctl suivantes.
Pour désactiver le détecteur de problème de nœud, exécutez la commande suivante :
systemctl stop node-problem-detectorPour redémarrer le détecteur de problème de nœud, exécutez la commande suivante :
systemctl restart node-problem-detectorPour vérifier si le détecteur de problème de nœud s'exécute sur un nœud particulier, exécutez la commande suivante :
systemctl is-active node-problem-detector
Fonctionnalités non compatibles
Google Distributed Cloud n'est pas compatible avec les personnalisations suivantes du détecteur de problème de nœud :
- Exportation des rapports du détecteur de problème de nœud vers d'autres systèmes de surveillance, tels que Stackdriver ou Prometheus
- Personnalisation des valeurs
NodeConditionsouEventsà rechercher - Exécution de scripts de surveillance définis par l'utilisateur
Étape suivante
Si vous avez besoin d'une aide supplémentaire, contactez Cloud Customer Care. Vous pouvez également consulter Obtenir de l'aide pour en savoir plus sur les ressources d'assistance, y compris en ce qui concerne les thématiques suivantes :
- Conditions requises pour ouvrir une demande d'assistance
- Outils pour vous aider à résoudre les problèmes liés à la configuration de votre environnement, les journaux et les métriques
- Composants acceptés