O Node Problem Detector é uma biblioteca de código aberto que monitora a integridade dos nós e detecta problemas comuns de nós, como hardware, kernel ou problemas de tempo de execução de contêineres. Em clusters do Anthos em Bare Metal, ele é executado como um serviço systemd em cada nó.
Nesse estado, o detector de problemas do nó fica desativado por padrão.
Quais problemas ele detecta?
O detector de problemas do nó pode detectar os seguintes tipos de problemas:
- Problemas no ambiente de execução do contêiner, como daemons do ambiente de execução sem resposta
- Problemas de hardware, como falhas de CPU, memória ou disco
- Problemas de kernel, como condições de impasse do kernel ou sistemas de arquivos corrompidos
Ele é executado em um nó e informa problemas no servidor da API
Kubernetes como um NodeCondition
ou como um Event
.
NodeCondition
é um problema que impede o nó de executar pods, enquanto um
Event
é um problema temporário que tem efeito limitado nos pods, mas é
considerado importante o suficiente para ser relatado.
Alguns dos NodeConditions
descobertos pelo detector de problemas do nó são:
KernelDeadlock
ReadonlyFilesystem
FrequentKubeletRestart
FrequentDockerRestart
FrequentContainerdRestart
FrequentUnregisterNetDevice
KubeletUnhealthy
ContainerRuntimeUnhealthy
CorruptDockerOverlay2
Alguns exemplos dos tipos de Events
relatados pelo Node Problem Detector são:
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.
Como ver os problemas detectados
Execute o seguinte comando kubectl describe
em um nó para procurar
NodeConditions
e Events
:
kubectl --kubeconfig=KUBECONFIG_PATH describe node NODE_NAME
No comando, substitua as seguintes entradas por informações específicas ao ambiente:
KUBECONFIG_PATH
: o caminho até o arquivo kubeconfig do cluster de destino. O caminho para o arquivo kubeconfig geralmente ébmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. No entanto, se você tiver especificado o espaço de trabalho com a sinalização WORKSPACE_DIR, o caminho seráWORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
.NODE_NAME
: o nome do nó sobre o qual você quer informações sobre integridade.
Como ativar/desativar o detector de problemas do nó
Siga estas etapas para ativar o detector de problema do nó em um determinado cluster:
Edite o arquivo
ConfigMap
do cluster chamadonode-problem-detector-config
.kubectl --kubeconfig=KUBECONFIG_PATH edit configmap \ node-problem-detector-config --namespace=CLUSTER_NAMESPACE
Esse comando inicia automaticamente um editor de texto (como vim ou nano) para editar o arquivo
node-problem-detector-config
. No comando, substitua as seguintes entradas por informações específicas ao ambiente do cluster:- KUBECONFIG_PATH: o caminho até o arquivo kubeconfig do cluster de administrador. O caminho para o arquivo kubeconfig geralmente é
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. No entanto, se você tiver especificado seu espaço de trabalho com a sinalização WORKSPACE_DIR, o caminho seráWORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. - CLUSTER_NAMESPACE: o namespace do cluster em que você quer ativar o detector de problemas do nó
- KUBECONFIG_PATH: o caminho até o arquivo kubeconfig do cluster de administrador. O caminho para o arquivo kubeconfig geralmente é
Inicialmente, o
ConfigMap
danode-problem-detector-config
não tem um campodata
. Adicione o campodata
ao mapa de configuração com o seguinte par de chave-valor:data: enabled: "true"
Para desativar o detector de problemas do nó em um namespace do cluster, execute as etapas anteriores
1 e 2, mas, na etapa 2, altere o valor da chave enabled
para
"falso".
Como parar/iniciar o detector de problemas do nó
O detector de problemas do nó é executado como um serviço systemd
em cada nó. Para gerenciar o detector de problemas de um nó, use o SSH para acessar o nó e execute os seguintes comandos systemctl
.
Para desativar o Detector de problemas do nó, execute o seguinte comando:
systemctl stop node-problem-detector
Para reiniciar o detector de problemas do nó, execute o seguinte comando:
systemctl restart node-problem-detector
Para verificar se o Detector de problemas de nós está sendo executado em um nó específico, execute o seguinte comando:
systemctl is-active node-problem-detector