O Node Problem Detector é uma biblioteca de código aberto que monitoriza o estado de funcionamento dos nós e deteta problemas comuns dos nós, como problemas de hardware, kernel ou tempo de execução do contentor. No Google Distributed Cloud, é executado como um serviço systemd em cada nó.
A partir da versão 1.10.0 do Google Distributed Cloud, o Node Problem Detector está ativado por predefinição.
Se precisar de assistência adicional, contacte o apoio ao cliente do Google Cloud. Também pode consultar o artigo Receber apoio técnico para mais informações sobre recursos de apoio técnico, incluindo o seguinte:
- Requisitos para abrir um registo de apoio ao cliente.
- Ferramentas para ajudar a resolver problemas, como a configuração do ambiente, os registos e as métricas.
- Componentes suportados.
Que problemas deteta?
O Node Problem Detector pode detetar os seguintes tipos de problemas:
- Problemas de tempo de execução do contentor, como daemons de tempo de execução que não respondem
- Problemas de hardware, como falhas da CPU, da memória ou do disco
- Problemas do kernel, como condições de impasse do kernel ou sistemas de ficheiros danificados
É executado num nó e comunica problemas ao servidor da API Kubernetes como um NodeCondition ou um Event.
Um NodeCondition é um problema que impede um nó de executar pods, enquanto um Event é um problema temporário que tem um efeito limitado nos pods, mas é, ainda assim, considerado suficientemente importante para ser comunicado.
A tabela seguinte descreve os NodeConditions descobertos pelo Node Problem Detector e se podem ou não ser reparados automaticamente:
| Condição | Motivo | Reparação de automóveis suportada1 |
|---|---|---|
KernelDeadlock |
Os processos do kernel estão bloqueados à espera que outros processos do kernel libertem os recursos necessários. | Não |
ReadonlyFilesystem |
O cluster não consegue escrever no sistema de ficheiros devido a um problema, como o disco estar cheio. | Não |
FrequentKubeletRestart |
O kubelet está a ser reiniciado com frequência, o que impede o nó de executar pods de forma eficaz. | Não |
FrequentDockerRestart |
O daemon do Docker foi reiniciado mais de 5 vezes em 20 minutos. | Não |
FrequentContainerdRestart |
O tempo de execução do contentor foi reiniciado mais de 5 vezes em 20 minutos. | Não |
FrequentUnregisterNetDevice |
O nó está a registar com frequência a anulação do registo de dispositivos de rede. | Não |
KubeletUnhealthy |
O nó não está a funcionar corretamente ou não está a responder ao plano de controlo. | Não |
ContainerRuntimeUnhealthy |
O tempo de execução do contentor não está a funcionar corretamente, o que impede a execução ou o agendamento de pods no nó. | Não |
CorruptDockerOverlay2 |
Existem problemas ou inconsistências do sistema de ficheiros no diretório do controlador de armazenamento overlay2 do Docker. | Não |
OrphanContainers2 |
Um pod específico de um contentor foi eliminado, mas o contentor correspondente continua a existir no nó. | Não |
FailedCgroupRemoval2 |
Alguns cgroups estão num estado congelado. | Sim |
1 Para as versões 1.32 e posteriores, a capacidade de reparar automaticamente os problemas detetados é suportada para condições selecionadas.
2 Compatível com as versões 1.32 e superiores.
Seguem-se alguns exemplos dos tipos de Events comunicados pelo 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.
Que problemas repara?
A partir da versão 1.32, quando o Node Problem Detector descobre determinados NodeConditions, pode reparar automaticamente o problema correspondente no nó. A partir da versão 1.32, o único NodeCondition que suporta a reparação automática é o FailedCgroupRemoval.
Como ver problemas detetados
Execute o seguinte comando kubectl describe para procurar NodeConditions e
Events:
kubectl describe node NODE_NAME \
--kubeconfig=KUBECONFIG
Substitua o seguinte:
NODE_NAME: o nome do nó que está a verificar.KUBECONFIG: o caminho do ficheiro kubeconfig do cluster.
Como ativar e desativar o Node Problem Detector
Por predefinição, o Node Problem Detector está ativado, mas pode ser desativado no recurso node-problem-detector-configConfigMap. A menos que a desative explicitamente, o Node Problem Detector monitoriza continuamente os nós para verificar condições específicas que indicam problemas para o nó.
Para desativar o Node Problem Detector num determinado cluster, siga estes passos:
Edite o recurso
node-problem-detector-configConfigMap:kubectl edit configmap node-problem-detector-config \ --kubeconfig=KUBECONFIG \ --namespace=CLUSTER_NAMESPACESubstitua o seguinte:
KUBECONFIG: o caminho do ficheiro kubeconfig do cluster.CLUSTER_NAMESPACE: o espaço de nomes do cluster no qual quer ativar o Node Problem Detector.
Este comando inicia automaticamente um editor de texto no qual pode editar o recurso
node-problem-detector-config.Defina
data.enabledcomofalsena definição do recursonode-problem-detector-config.apiVersion: v1 kind: ConfigMap metadata: creationTimestamp: "2025-04-19T21:36:44Z" name: node-problem-detector-config ... data: enabled: "false"Inicialmente, o
node-problem-detector-configConfigMap não tem um campodata, pelo que pode ter de o adicionar.Para atualizar o recurso, guarde as alterações e feche o editor.
Para reativar o Node Problem Detector, execute os passos anteriores, mas defina data.enabled como
true na definição do recurso node-problem-detector-config.
Como ativar e desativar a reparação automática
A partir da versão 1.32, o Node Problem Detector verifica NodeConditions específicos e repara automaticamente o problema correspondente no nó. Por predefinição, a reparação automática está ativada para os NodeConditions suportados, mas pode ser desativada no recurso node-problem-detector-config ConfigMap.
Para desativar o comportamento de reparação automática num determinado cluster, siga os seguintes passos:
Edite o recurso
node-problem-detector-configConfigMap:kubectl edit configmap node-problem-detector-config \ --kubeconfig=KUBECONFIG \ --namespace=CLUSTER_NAMESPACESubstitua o seguinte:
KUBECONFIG: o caminho do ficheiro kubeconfig do cluster.CLUSTER_NAMESPACE: o espaço de nomes do cluster no qual quer ativar o Node Problem Detector.
Este comando inicia automaticamente um editor de texto no qual pode editar o recurso
node-problem-detector-config.Defina
data.check-onlycomotruena definição do recursonode-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"Inicialmente, o
node-problem-detector-configConfigMap não tem um campodata, pelo que pode ter de o adicionar. A definição decheck-onlycomo"true"desativa a reparação automática para todas as condições suportadas.Para atualizar o recurso, guarde as alterações e feche o editor.
Para reativar a reparação automática para todos os NodeConditions que a suportam, defina data.check-only como "false" no node-problem-detector-config ConfigMap.
Como parar e reiniciar o Node Problem Detector
O Node Problem Detector é executado como um systemd serviço em cada nó. Para gerir o Node Problem Detector para um determinado nó, use o SSH para aceder ao nó e execute os seguintes comandos systemctl.
Para desativar o Node Problem Detector, execute o seguinte comando:
systemctl stop node-problem-detectorPara reiniciar o Node Problem Detector, execute o seguinte comando:
systemctl restart node-problem-detectorPara verificar se o Node Problem Detector está a ser executado num nó específico, execute o seguinte comando:
systemctl is-active node-problem-detector
Funcionalidades não suportadas
O Google Distributed Cloud não suporta as seguintes personalizações do Node Problem Detector:
- Exportar relatórios do Node Problem Detector para outros sistemas de monitorização, como o Stackdriver ou o Prometheus.
- Personalizar o
NodeConditionsou oEventsa procurar. - Execução de scripts de monitorização definidos pelo utilizador.
O que se segue?
Se precisar de assistência adicional, contacte o apoio ao cliente do Google Cloud. Também pode consultar o artigo Receber apoio técnico para mais informações sobre recursos de apoio técnico, incluindo o seguinte:
- Requisitos para abrir um registo de apoio ao cliente.
- Ferramentas para ajudar a resolver problemas, como a configuração do ambiente, os registos e as métricas.
- Componentes suportados.