Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Node Problem Detetor (NPD) é um componente Kubernetes de código aberto que deteta problemas relacionados ao nó e relata sobre eles. É executado como um serviço que funciona em cada nó do cluster e recolhe várias métricas e informações do sistema, como utilização da CPU, utilização do disco e conectividade de rede. Quando deteta um problema, gera eventos e/ou condições de nós. O Azuere Kubernetes Service (AKS) utiliza o NPD para monitorizar e gerir nós em clusters do Kubernetes em execução na plataforma cloud do Azure. A extensão AKS Linux ativa o NPD por predefinição.
Nota
As atualizações para NPD são independentes da imagem do nó e dos processos de atualização da versão do Kubernetes. Se um pool de nós não estiver íntegro (ou seja, em um estado de falha), novas versões do NPD não serão instaladas.
Condições do nó
As condições do nó indicam um problema permanente que torna o nó indisponível. AKS utiliza as seguintes condições de nó de NPD para identificar problemas permanentes no nó. O NPD também emite eventos Kubernetes correspondentes.
Tipo de problema de Daemon | NodeCondition | Razão |
---|---|---|
CustomPluginMonitor | Problema de Corrupção do Sistema de Arquivos | Corrupção_do_Sistema_de_Ficheiros_Detectada |
CustomPluginMonitor | KubeletProblem | KubeletIsDown |
CustomPluginMonitor | ProblemaNoTempoDeExecuçãoDoContêiner | ORuntimeDoContentorEstáIndisponível |
CustomPluginMonitor | VMEventScheduled | VMEventScheduled |
CustomPluginMonitor | FrequentUnregisterNetDevice | Desregistar o dispositivo de rede |
CustomPluginMonitor | Reinício Frequente do Kubelet | Reinício Frequente do Kubelet |
Plugin Personalizado de Monitorização | Reinício Frequente do Containerd | Reinício Frequente do Containerd |
CustomPluginMonitor | Reinício Frequente do Docker | Reinício Frequente do Docker |
Monitor de Registos do Sistema | KernelDeadlock | DockerHung |
Monitor de Registos do Sistema | ReadonlyFilesystem | O sistema de ficheiros está em modo de leitura apenas |
eventos
O NPD emite eventos com informações relevantes para ajudá-lo a diagnosticar problemas subjacentes.
Tipo de problema de Daemon | Razão | Frequência | Descrição | Ação |
---|---|---|---|---|
CustomPluginMonitor | EgressBlocked | 30 minutos | Este evento verifica a conectividade com pontos de extremidade externos | Verifique se um firewall ou NSG está a bloquear a conectividade com o ponto de extremidade que está a ser assinalado. |
CustomPluginMonitor | Corrupção_do_Sistema_de_Ficheiros_Detectada | 5 minutos | Isso verifica se há corrupção no sistema de arquivos revelada pelo docker | |
CustomPluginMonitor (Monitor de Plugin Personalizado) | KubeletIsDown | década de 1930 | Isso verifica se o serviço kubelet está em execução e íntegro | |
CustomPluginMonitor | ORuntimeDoContentorEstáIndisponível | década de 1930 | Este evento verifica se o runtime do contentor, por exemplo: containerd, está a funcionar e está íntegro. | |
CustomPluginMonitor | FreezeScheduled | 1 minuto | Este evento verifica se um Evento de Congelamento está agendado no nó. Consulte https://aka.ms/aks/scheduledevents para obter mais informações | |
CustomPluginMonitor | ReinícioProgramado | 1 minuto | Este evento verifica se um evento de reinicialização está agendado no nó Verificar https://aka.ms/aks/scheduledevents se há mais informações | |
CustomPluginMonitor | RedesdobramentoProgramado | 1 minuto | Este evento verifica se um Evento de Reimplantação está agendado no nó. Consulte https://aka.ms/aks/scheduledevents para obter mais informações | |
CustomPluginMonitor | TerminarProgramado | 1 minuto | Esse evento verifica se um Evento de Encerramento está agendado no nó. Consulte https://aka.ms/aks/scheduledevents para obter mais informações | |
CustomPluginMonitor | PreempçãoAgendada | 2s | Este evento verifica se um evento preemptivo está agendado no nó. Consulte https://aka.ms/aks/scheduledevents para obter mais informações | |
CustomPluginMonitor | DNSProblem | |||
Monitor de Registos do Sistema | OOMKilling | |||
Monitor de Registos do Sistema | TaskHung | |||
Monitor de Registos do Sistema | Desregistar o dispositivo de rede | |||
Monitor de Registos do Sistema | KernelOops | |||
Monitor de Registos do Sistema | DockerSocketNãoConsegueConectar | |||
Monitor de Registos do Sistema | KubeletRPCDeadlineExceeded (Erro: Prazo Excedido) | |||
Monitor de Registos do Sistema | KubeletRPCNoSuchContainer | |||
Monitor de Registos do Sistema | CNICannotStatFS | |||
Monitor de Registos do Sistema | PLEGUnhealthy | |||
Monitor de Registos do Sistema | KubeletStart | |||
Monitor de Registos do Sistema | DockerStart | |||
Monitor de Registos do Sistema | ContainerdStart |
Em certos casos, o AKS isola e drena automaticamente o nó para minimizar interrupções nas cargas de trabalho. Para obter mais informações sobre os eventos e ações, consulte Drenagem automática de nó.
EgressBlocked
A lista de pontos de extremidade verificados pelo EgressBlocked está listada abaixo
Nota
Os pontos de extremidade reais dependerão do tipo de cluster e do local onde ele está hospedado (nuvem pública vs nuvens Airgaped). Consulte a documentação sobre acesso externo aqui. A documentação é para nuvens públicas
Tipo | Exemplo | Nota |
---|---|---|
MCR | https://mcr.microsoft.com | |
Microsoft Entra ID (um serviço de identificação da Microsoft) | https://login.microsoftonline.com" | |
Gestor de Recursos | https://management.azure.com | |
Pacotes | https://packages.microsoft.com | |
Kube Binário | https://acs-mirror.azureedge.net/acs-mirror/healthz,https://packages.aks.azure.com/acs-mirror/healthz |
Verifique as condições dos nós e os eventos
Verifique as condições e os eventos do nó usando o
kubectl describe node
comando.kubectl describe node my-aks-node
Sua saída deve ser semelhante ao exemplo de saída condensada a seguir:
... ... Conditions: Type Status LastHeartbeatTime LastTransitionTime Reason Message ---- ------ ----------------- ------------------ ------ ------- VMEventScheduled False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 NoVMEventScheduled VM has no scheduled event FrequentContainerdRestart False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 NoFrequentContainerdRestart containerd is functioning properly FrequentDockerRestart False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 NoFrequentDockerRestart docker is functioning properly FilesystemCorruptionProblem False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 FilesystemIsOK Filesystem is healthy FrequentUnregisterNetDevice False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 NoFrequentUnregisterNetDevice node is functioning properly ContainerRuntimeProblem False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:40 +0000 ContainerRuntimeIsUp container runtime service is up KernelDeadlock False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 KernelHasNoDeadlock kernel has no deadlock FrequentKubeletRestart False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 NoFrequentKubeletRestart kubelet is functioning properly KubeletProblem False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 KubeletIsUp kubelet service is up ReadonlyFilesystem False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 FilesystemIsNotReadOnly Filesystem is not read-only NetworkUnavailable False Thu, 01 Jun 2023 03:58:39 +0000 Thu, 01 Jun 2023 03:58:39 +0000 RouteCreated RouteController created a route MemoryPressure True Thu, 01 Jun 2023 19:16:50 +0000 Thu, 01 Jun 2023 19:16:50 +0000 KubeletHasInsufficientMemory kubelet has insufficient memory available DiskPressure False Thu, 01 Jun 2023 19:16:50 +0000 Thu, 01 Jun 2023 03:57:22 +0000 KubeletHasNoDiskPressure kubelet has no disk pressure PIDPressure False Thu, 01 Jun 2023 19:16:50 +0000 Thu, 01 Jun 2023 03:57:22 +0000 KubeletHasSufficientPID kubelet has sufficient PID available Ready True Thu, 01 Jun 2023 19:16:50 +0000 Thu, 01 Jun 2023 03:57:23 +0000 KubeletReady kubelet is posting ready status. AppArmor enabled ... ... ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal NodeHasSufficientMemory 94s (x176 over 15h) kubelet Node aks-agentpool-40622340-vmss000009 status is now: NodeHasSufficientMemory
Esses eventos também estão disponíveis no Container Insights por meio do KubeEvents.
Métricas
O NPD também expõe métricas do Prometheus baseadas nos problemas dos nós, que podem ser utilizadas para monitorização e alertas. Essas métricas são expostas na porta 20257 do IP do nó e o Prometheus pode recolhê-las.
O exemplo YAML a seguir mostra uma configuração de raspagem que você pode usar com o Azure Managed Prometheus add on como um DaemonSet:
kind: ConfigMap
apiVersion: v1
metadata:
name: ama-metrics-prometheus-config-node
namespace: kube-system
data:
prometheus-config: |-
global:
scrape_interval: 1m
scrape_configs:
- job_name: node-problem-detector
scrape_interval: 1m
scheme: http
metrics_path: /metrics
relabel_configs:
- source_labels: [__metrics_path__]
regex: (.*)
target_label: metrics_path
- source_labels: [__address__]
replacement: '$NODE_NAME'
target_label: instance
static_configs:
- targets: ['$NODE_IP:20257']
O exemplo a seguir mostra as métricas extraídas.
problem_gauge{reason="UnregisterNetDevice",type="FrequentUnregisterNetDevice"} 0
problem_gauge{reason="VMEventScheduled",type="VMEventScheduled"} 0
Próximos passos
Para obter mais informações sobre NPD, consulte kubernetes/node-problem-detector.
Azure Kubernetes Service