Node Problem Detector

Rilevamento problemi dei nodi è una libreria open source che monitora l'integrità dei nodi e rileva problemi relativi ai nodi, ad esempio problemi di runtime hardware, kernel o container. In Google Distributed Cloud, viene eseguito come servizio systemd su ogni nodo.

A partire dalla versione 1.10.0 di Google Distributed Cloud, il rilevatore problemi nodo è abilitato per impostazione predefinita.

Se hai bisogno di ulteriore assistenza, contatta Assistenza clienti Google Cloud.

Quali problemi rileva?

Il rilevatore di problemi del nodo può rilevare i seguenti tipi di problemi:

  • Problemi di runtime del contenitore, ad esempio demoni di runtime che non rispondono
  • Problemi hardware, ad esempio guasti della CPU, della memoria o del disco
  • Problemi del kernel, ad esempio condizioni di deadlock del kernel o file system danneggiati

Viene eseguito su un nodo e segnala i problemi all'API Kubernetes server come NodeCondition o come Event. (un NodeCondition è un problema che impedisce a un nodo di eseguire pod, mentre Event è un problema temporaneo che ha un effetto limitato sui pod, ma comunque considerata abbastanza importante da riferire).

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

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

Ecco alcuni esempi di tipi di Events segnalati da 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.

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 voci seguenti con informazioni specifiche per il tuo ambiente:

  • KUBECONFIG_PATH: il percorso del file kubeconfig del cluster di destinazione. In genere il percorso del file kubeconfig è bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig. Tuttavia, se 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 informazioni sullo stato di salute.

Come abilitare/disabilitare il rilevatore dei problemi dei nodi

Di seguito sono riportati i passaggi da seguire per attivare il Rilevamento dei problemi relativi ai nodi in un determinato cluster:

  1. Modifica il file ConfigMap del cluster, chiamato 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 che puoi modificare il file node-problem-detector-config. Nella sostituisci le voci seguenti con informazioni specifiche per il tuo nell'ambiente del cluster:

    • KUBECONFIG_PATH: il percorso del file kubeconfig del cluster di amministrazione. In genere il percorso del file kubeconfig èbmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig. Tuttavia, se hai specificato lo spazio 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 attivare Node Problem Detector.
  2. Inizialmente, node-problem-detector-config ConfigMap non ha un data campo. Aggiungi il campo data alla mappa di configurazione con quanto segue coppia chiave-valore:

    data:
      enabled: "true"
    

Per disattivare Node Problem Detector 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

Node Problem Detector viene eseguito come servizio systemd su ogni 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 Node Problem Detector, esegui il seguente 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 di Node Problem detector:

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

Passaggi successivi