Rilevatore di problemi con i nodi

Rilevatore del problema del nodo è una libreria open source che monitora l'integrità dei nodi e rileva problemi comuni relativi ai nodi, come problemi di runtime hardware, kernel o container. In Cluster Anthos su Bare Metal, viene eseguito come un servizio systemd su ciascun nodo.

In modalità di anteprima, il rilevatore dei problemi dei nodi è disabilitato per impostazione predefinita.

Quali problemi rileva?

La funzionalità di rilevamento dei problemi dei nodi è in grado di rilevare i seguenti tipi di problemi:

  • Problemi di runtime del container, ad esempio daemon di runtime che non rispondono
  • Problemi relativi all'hardware, ad esempio CPU, memoria o errori del disco
  • Problemi con il kernel, come 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 che impedisce a un nodo 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).

Ecco alcuni dei NodeConditions rilevati da Nodo problemi:

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

Di seguito sono riportati alcuni esempi dei tipi di Events segnalati da Rilevatore di problemi dei nodi:

  • 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 il comando kubectl describe seguente 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 per cui vuoi trovare informazioni sanitarie.

Come abilitare/disabilitare il rilevamento dei problemi dei nodi

Ecco i passaggi da seguire per abilitare Rilevatore problemi nodo su 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 (ad es. vim o nano) in cui puoi modificare il file node-problem-detector-config. Nel comando, sostituisci le voci seguenti con informazioni specifiche per l'ambiente del 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 rilevamento dei problemi dei nodi.
  2. Inizialmente, 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 dei problemi dei nodi in uno spazio dei nomi del cluster, esegui i passaggi precedenti 1 e 2, ma nel passaggio 2 modifica il valore della chiave enabled in &&39;false'.

Come arrestare/avviare il rilevamento dei problemi dei nodi

Il rilevatore dei problemi dei nodi viene eseguito come servizio systemd su ogni nodo. Per gestire il nodo dei problemi relativi a un nodo, usa SSH per accedere al nodo ed eseguire i seguenti comandi systemctl.

Per disabilitare il rilevatore dei problemi dei nodi, esegui il comando seguente:

systemctl stop node-problem-detector

Per riavviare Node Detect Detect, esegui il comando seguente:

systemctl restart node-problem-detector

Per verificare se il rilevatore dei problemi dei nodi è in esecuzione su un nodo specifico, esegui il comando seguente:

systemctl is-active node-problem-detector