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 GDCV pour Bare Metal, il s'exécute en tant que service systemd sur chaque nœud.
À partir de la version 1.10.0 de GDCV pour Bare Metal, le détecteur de problèmes de nœuds est activé par défaut.
Quels sont les problèmes détectés ?
Le détecteur de problème 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é.)
Voici quelques-uns des NodeConditions
détectés par le détecteur de problème de nœud :
KernelDeadlock
ReadonlyFilesystem
FrequentKubeletRestart
FrequentDockerRestart
FrequentContainerdRestart
FrequentUnregisterNetDevice
KubeletUnhealthy
ContainerRuntimeUnhealthy
CorruptDockerOverlay2
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.
Comment afficher les problèmes détectés
Exécutez la commande kubectl describe
suivante sur un nœud pour rechercher NodeConditions
et Events
:
kubectl --kubeconfig=KUBECONFIG_PATH describe node NODE_NAME
Dans la commande, remplacez les entrées suivantes par des informations spécifiques à votre environnement :
KUBECONFIG_PATH
: chemin d'accès au fichier kubeconfig du cluster cible. (le chemin d'accès au fichier kubeconfig est généralementbmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Toutefois, si vous avez spécifié votre espace de travail avec l'option WORKSPACE_DIR, le chemin d'accès estWORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
).NODE_NAME
: nom du nœud pour lequel vous souhaitez obtenir des informations d'état.
Comment activer/désactiver le détecteur de problème de nœud
Voici les étapes à suivre pour activer le détecteur de problème de nœud sur un cluster donné :
Modifiez le fichier
ConfigMap
du cluster, nomménode-problem-detector-config
.kubectl --kubeconfig=KUBECONFIG_PATH edit configmap \ node-problem-detector-config --namespace=CLUSTER_NAMESPACE
Cette commande démarre automatiquement un éditeur de texte (tel que Vim ou Nano), dans lequel vous pouvez modifier le fichier
node-problem-detector-config
. Dans la commande, remplacez les entrées suivantes par des informations spécifiques à votre environnement de cluster :- KUBECONFIG_PATH : chemin d'accès au fichier kubeconfig du cluster d'administrateur. (le chemin d'accès au fichier kubeconfig est généralement
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Toutefois, si vous avez spécifié votre espace de travail avec l'option WORKSPACE_DIR, le chemin d'accès estWORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
). - CLUSTER_NAMESPACE : espace de noms du cluster dans lequel vous souhaitez activer le détecteur de problème de nœud.
- KUBECONFIG_PATH : chemin d'accès au fichier kubeconfig du cluster d'administrateur. (le chemin d'accès au fichier kubeconfig est généralement
Initialement, le
ConfigMap
node-problem-detector-config
ne comporte pas de champdata
. Ajoutez le champdata
à la carte de configuration avec la paire clé/valeur suivante :data: enabled: "true"
Pour désactiver le détecteur de problème de nœud dans un espace de noms de cluster, suivez les étapes 1 et 2. Toutefois, à l'étape 2, définissez la valeur de la clé enabled
sur "false".
Comment arrêter/dé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
La GDCV pour Bare Metal n'est pas compatible avec les personnalisations suivantes du détecteur de problèmes de nœuds:
- 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