Rilevatore problemi nodo

Rilevamento problemi dei nodi è una libreria open source che monitora l'integrità dei nodi e rileva i problemi più comuni dei nodi, come problemi di runtime relativi a hardware, kernel o container. In Google Distributed Cloud, viene eseguito come servizio systemd su ciascun nodo.

A partire dalla release 1.10.0 di Google Distributed Cloud, Node Problem Detector è abilitato per impostazione predefinita.

Se hai bisogno di ulteriore aiuto, contatta l'assistenza clienti Google Cloud.

Quali problemi rileva?

Il rilevatore di problemi del nodo è in grado di rilevare i seguenti tipi di problemi:

  • Problemi di runtime dei container, ad esempio i daemon di runtime che non rispondono
  • Problemi hardware, ad esempio guasti di CPU, memoria o disco
  • Problemi del kernel, ad esempio condizioni di deadlock del kernel o file system danneggiati

Viene eseguito su un nodo e segnala i problemi al server API Kubernetes come NodeCondition o come Event. (un NodeCondition è un problema per cui un nodo non è in grado di eseguire i pod, mentre un Event è un problema temporaneo che ha un effetto limitato sui pod, ma è comunque considerato abbastanza importante da essere segnalato).

Alcuni dei NodeConditions rilevati dal rilevatore di problemi relativi ai nodi sono:

  • KernelDeadlock
  • ReadonlyFilesystem
  • FrequentKubeletRestart
  • FrequentDockerRestart
  • FrequentContainerdRestart
  • FrequentUnregisterNetDevice
  • KubeletUnhealthy
  • ContainerRuntimeUnhealthy
  • CorruptDockerOverlay2

Alcuni esempi dei tipi di Events segnalati dal rilevatore di problemi relativi ai nodi sono:

  • 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.

Come visualizzare i problemi rilevati

Esegui questo comando kubectl describe su un nodo per cercare NodeConditions e Events:

kubectl --kubeconfig=KUBECONFIG_PATH describe node NODE_NAME

Nel comando, sostituisci le seguenti voci con informazioni specifiche per il tuo ambiente:

  • KUBECONFIG_PATH: il percorso del file kubeconfig del cluster di destinazione. Il percorso del file kubeconfig è in genere bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig. Tuttavia, se hai specificato l'area di lavoro con il flag WORKSPACE_DIR, il percorso è WORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig).

  • NODE_NAME: il nome del nodo di cui vuoi ottenere le informazioni sull'integrità.

Come abilitare/disabilitare il rilevatore dei problemi dei nodi

Ecco i passaggi da seguire per abilitare il rilevatore dei problemi dei nodi in un determinato cluster:

  1. Modifica il file ConfigMap del cluster denominato node-problem-detector-config

       kubectl --kubeconfig=KUBECONFIG_PATH edit configmap \
           node-problem-detector-config --namespace=CLUSTER_NAMESPACE
    

    Questo comando avvia automaticamente un editor di testo (come vim o nano) in cui è possibile modificare il file node-problem-detector-config. Nel comando, sostituisci le voci seguenti con informazioni specifiche per l'ambiente cluster:

    • KUBECONFIG_PATH: il percorso del file kubeconfig del cluster di amministrazione. Il percorso del file kubeconfig è in genere bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig. Tuttavia, se hai specificato l'area di lavoro con il flag WORKSPACE_DIR, il percorso è WORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig).
    • CLUSTER_NAMESPACE: lo spazio dei nomi del cluster in cui vuoi abilitare il rilevatore di problemi relativi ai nodi.
  2. Inizialmente, l'elemento node-problem-detector-config ConfigMap non ha un campo data. Aggiungi il campo data alla mappa di configurazione con la seguente coppia chiave-valore:

    data:
      enabled: "true"
    

Per disabilitare il rilevatore di problemi con i nodi in uno spazio dei nomi del cluster, esegui i passaggi 1 e 2 precedenti, ma nel passaggio 2 modifica il valore della chiave enabled in "false".

Come arrestare/avviare il rilevatore dei problemi del nodo

Il rilevatore di problemi dei nodi viene eseguito come servizio systemd su ciascun nodo. Per gestire il rilevatore di problemi dei nodi per un determinato nodo, utilizza SSH per accedere al nodo ed esegui i seguenti comandi systemctl.

Per disabilitare il rilevatore di problemi con i nodi, esegui questo comando:

systemctl stop node-problem-detector

Per riavviare il rilevatore di problemi relativi ai nodi, esegui questo comando:

systemctl restart node-problem-detector

Per verificare se il rilevatore di problemi dei nodi è in esecuzione su un determinato nodo, esegui questo comando:

systemctl is-active node-problem-detector

Funzionalità non supportate

Google Distributed Cloud non supporta le seguenti personalizzazioni del rilevatore di problemi dei nodi:

  • Esportazione dei report di rilevamento dei problemi dei nodi in altri sistemi di monitoraggio, come Stackdriver o Prometheus.
  • Personalizzazione di quali elementi NodeConditions o Events cercare.
  • Esecuzione di script di monitoraggio definiti dall'utente.

Passaggi successivi