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 la page Obtenir de l'aide pour en savoir plus sur les ressources d'assistance, y compris les suivantes:
- Conditions requises pour ouvrir une demande d'assistance.
- Des outils pour vous aider à résoudre les problèmes, tels que la configuration de votre environnement, les journaux et les métriques.
- Composants compatibles.
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 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 ou non:
Condition | Motif | Prise en charge de la réparation automatique1 |
---|---|---|
KernelDeadlock |
Les processus du kernel sont bloqués en attendant que d'autres processus du kernel 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 si le disque est saturé. | Non |
FrequentKubeletRestart |
Le kubelet redémarre fréquemment, ce qui empêche le nœud d'exécuter des pods efficacement. | 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 enregistre fréquemment la désinscription d'appareils réseau. | Non |
KubeletUnhealthy |
Le nœud ne fonctionne pas correctement ou ne répond pas au plan de contrôle. | Non |
ContainerRuntimeUnhealthy |
L'environnement d'exécution du conteneur ne fonctionne pas correctement, ce qui empêche l'exécution ou la planification des pods sur le nœud. | Non |
CorruptDockerOverlay2 |
Des problèmes ou des incohérences liés au système de fichiers sont détectés dans le répertoire du pilote de stockage overlay2 Docker. | Non |
OrphanContainers 2 |
Un pod spécifique à un conteneur a été supprimé, mais le conteneur correspondant existe toujours dans le nœud. | Non |
FailedCgroupRemoval 2 |
Certains groupes de conteneurs sont figés. | Oui |
1 : Pour les versions 1.32 et ultérieures, la possibilité de réparer automatiquement les problèmes détectés est prise en charge dans certaines conditions.
2 Compatible avec les versions 1.32 et ultérieures.
Voici quelques exemples de types de 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 problèmes corrige-t-il ?
À partir de la version 1.32, lorsque le détecteur de problèmes de nœuds détecte certains NodeConditions
, il peut réparer automatiquement le problème correspondant sur le nœud. À partir de la version 1.32, le seul NodeCondition
compatible avec la réparation automatique est FailedCgroupRemoval
.
Comment afficher les problèmes détectés
Exécutez la commande kubectl describe
suivante pour rechercher NodeConditions
et 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.
Activer et désactiver le détecteur de problème de nœud
Par défaut, le détecteur de problèmes de nœuds 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èmes de nœuds surveille en permanence les nœuds pour détecter des conditions spécifiques qui indiquent des problèmes.
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_NAMESPACE
Remplacez 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.enabled
surfalse
dans la définition de la 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-config
ne comporte pas de champdata
. Vous devrez peut-être l'ajouter.Pour mettre à jour la ressource, enregistrez les 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 la ressource node-problem-detector-config
.
Activer et désactiver la réparation automatique
À partir de la version 1.32, le détecteur de problèmes de nœuds 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_NAMESPACE
Remplacez 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-only
surtrue
dans la définition de la 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-config
ne comporte pas de champdata
. Vous devrez peut-être l'ajouter. Si la propriétécheck-only
est définie sur"true"
, la réparation automatique est désactivée pour toutes les conditions prises en charge.Pour mettre à jour la ressource, enregistrez les 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 ConfigMap node-problem-detector-config
.
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-detector
Pour redémarrer le détecteur de problème de nœud, exécutez la commande suivante :
systemctl restart node-problem-detector
Pour 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
NodeConditions
ouEvents
à rechercher - Exécution de scripts de surveillance définis par l'utilisateur
Étapes suivantes
Si vous avez besoin d'une aide supplémentaire, contactez Cloud Customer Care.
Vous pouvez également consulter la page Obtenir de l'aide pour en savoir plus sur les ressources d'assistance, y compris les suivantes:
- Conditions requises pour ouvrir une demande d'assistance.
- Des outils pour vous aider à résoudre les problèmes, tels que la configuration de votre environnement, les journaux et les métriques.
- Composants compatibles.