Ajudar a melhorar esta página
Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.
Detecte problemas de integridade dos nós com o agente de monitoramento de nós do EKS
Este tópico descreve em detalhes os problemas de integridade dos nós detectados pelo agente de monitoramento de nós do EKS, como esses problemas são apresentados como condições ou eventos dos nós e como configurar o agente de monitoramento de nós.
O agente de monitoramento de nós do EKS pode ser utilizado com ou sem o reparo automático de nós do EKS. Para obter mais informações sobre o reparo automático de nós do EKS, consulte Reparar automaticamente nós em clusters do EKS.
O código-fonte do agente de monitoramento de nós do EKS está publicado no GitHub no repositório aws/eks-node-monitoring-agent
Problemas de integridade de nós
As tabelas a seguir descrevem problemas de integridade de nós que podem ser detectados pelo agente de monitoramento de nós. Há dois tipos de problemas:
-
Condição: um problema terminal que justifica uma ação de remediação, como a substituição ou reinicialização de uma instância. Quando o reparo automático estiver habilitado, o Amazon EKS executará uma ação de reparo, seja uma substituição ou uma reinicialização do nó. Para obter mais informações, consulte Condições de nós.
-
Evento: um problema temporário ou uma configuração de nós abaixo do ideal. Nenhuma ação de reparo automático ocorrerá. Para obter mais informações, consulte Eventos de nós.
Problemas de integridade de nós com AcceleratedHardware
Para os problemas listados na tabela abaixo com gravidade do tipo “Condição”, a condição de monitoramento utilizada é AcceleratedHardwareReady. Os eventos e condições apresentados na tabela abaixo referem-se a problemas de integridade dos nós relacionados ao NVIDIA e ao Neuron.
| Nome | Gravidade | Descrição | Ação de reparo |
|---|---|---|---|
|
DCGMDiagnosticFailure |
Condição |
Um caso de teste do conjunto de testes de diagnóstico ativo do DCGM falhou. |
Nenhum |
|
DCGMError |
Condição |
Houve perda de conexão com o processo host do DCGM ou não foi possível estabelecê-la. |
Nenhum |
|
DCGMFieldError[Code] |
Event |
O DCGM detectou degradação da GPU por meio de um identificador de campo. |
Nenhum |
|
DCGMHealthCode[Code] |
Event |
Uma verificação de integridade do DCGM falhou de forma não fatal. |
Nenhum |
|
DCGMHealthCode[Code] |
Condição |
Uma verificação de integridade do DCGM falhou de forma fatal. |
Nenhum |
|
NeuronDMAError |
Condição |
Um mecanismo de DMA encontrou um erro irrecuperável. |
Substituir |
|
NeuronHBMUncorrectableError |
Condição |
Um HBM encontrou um erro incorrigível e produziu resultados incorretos. |
Substituir |
|
NeuronNCUncorrectableError |
Condição |
Foi detectado um erro de memória incorrigível do Neuron Core. |
Substituir |
|
NeuronSRAMUncorrectableError |
Condição |
Uma SRAM no chip encontrou um erro de paridade e produziu resultados incorretos. |
Substituir |
|
NvidiaDeviceCountMismatch |
Event |
O número de GPUs visíveis por meio da biblioteca NVML é inconsistente com o número de dispositivos da NVIDIA no sistema de arquivos. |
Nenhum |
|
NvidiaDoubleBitError |
Condição |
Um erro de dois bits foi produzido pelo driver da GPU. |
Substituir |
|
NvidiaNCCLError |
Event |
Ocorreu uma falha de segmentação na NVIDIA Collective Communications Library ( |
Nenhum |
|
NvidiaNVLinkError |
Condição |
Erros do NVLink foram relatados pelo driver da GPU. |
Substituir |
|
NvidiaPCIeError |
Event |
As retransmissões de PCIe foram acionadas para a recuperação de erros de transmissão. |
Nenhum |
|
NvidiaPageRetirement |
Event |
O driver da GPU marcou uma página de memória para retirada. Isso poderá ocorrer se houver um único erro de bit duplo ou se dois erros de bit único forem encontrados no mesmo endereço. |
Nenhum |
|
NvidiaPowerError |
Event |
O uso de energia pelas GPUs ultrapassou os limites permitidos. |
Nenhum |
|
NvidiaThermalError |
Event |
O status térmico das GPUs ultrapassou os limites permitidos. |
Nenhum |
|
NvidiaXID[Code]Error |
Condição |
Ocorreu um erro crítico relacionado com a GPU. |
Substituir ou Reinicializar |
|
NvidiaXID[Code]Warning |
Event |
Ocorreu um erro não crítico relacionado com a GPU. |
Nenhum |
Códigos de erro NVIDIA XID
O agente de monitoramento de nós detecta erros NVIDIA XID a partir dos logs do kernel da GPU. Os erros XID dividem-se em duas categorias:
-
Códigos XID conhecidos: erros críticos que definem uma condição do nó (
AcceleratedHardwareReady=False) e acionam o reparo automático quando habilitado. O formato do código de motivo éNvidiaXID[Code]Error. Os códigos XID conhecidos que o agente de monitoramento do nó do EKS detecta podem não representar a lista completa de códigos XID da NVIDIA que exigem ações de reparo. -
Códigos XID desconhecidos: registrados apenas como eventos do Kubernetes. Eles não acionam o reparo automático. O formato do código de motivo é
NvidiaXID[Code]Warning. Para investigar erros XID desconhecidos, analise os logs do kernel comdmesg | grep -i nvrm.
Para obter mais informações sobre erros do XID, consulte Xid Errors
A tabela a seguir lista os códigos XID mais conhecidos, seus significados e a ação padrão de reparo do nó, caso esteja habilitada.
| Código XID | Descrição | Ação de reparo |
|---|---|---|
|
13 |
Exceção do mecanismo gráfico: ocorreu um erro no mecanismo gráfico da GPU, geralmente causado por problemas de software ou falhas no driver. |
Reinicializar |
|
31 |
Falha de página na memória da GPU: uma aplicação tentou acessar uma área da memória da GPU que não está mapeada ou não é acessível. |
Reinicializar |
|
48 |
Erro ECC de dois bits: ocorreu um erro de dois bits não corrigível na memória da GPU, indicando uma possível degradação do hardware. |
Reinicializar |
|
63 |
Evento de remapeamento da memória da GPU: o driver da GPU remapeou uma parte da memória da GPU devido a erros detectados. Isso geralmente é recuperável. |
Reinicializar |
|
64 |
Falha no remapeamento da memória da GPU: a GPU não conseguiu remapear a memória defeituosa, o que indica problemas de hardware. |
Reinicializar |
|
74 |
Erro NVLink: ocorreu um erro na interconexão NVLink de alta velocidade entre as GPUs. |
Substituir |
|
79 |
A GPU foi desconectada do barramento: a GPU não está mais acessível via PCIe, o que geralmente indica uma falha de hardware ou um problema de alimentação. |
Substituir |
|
94 |
Erro de memória contido: ocorreu um erro de memória, mas ele foi contido e não afetou outras aplicações. |
Reinicializar |
|
95 |
Erro de memória não contida: ocorreu um erro de memória que pode ter afetado outras aplicações ou a memória do sistema. |
Reinicializar |
|
119 |
Tempo limite do GSP RPC: o tempo de espera para a comunicação com o processador do sistema da GPU expirou, possivelmente devido a problemas de firmware. |
Substituir |
|
120 |
Erro no GSP: ocorreu um erro no processador do sistema da GPU. |
Substituir |
|
121 |
Erro C2C: ocorreu um erro na interconexão entre chips (utilizada em GPUs com vários chips). |
Substituir |
|
140 |
Erro ECC não recuperado: um erro ECC escapou do mecanismo de contenção e pode ter corrompido os dados. |
Substituir |
Para visualizar as condições atuais do nó relacionadas à integridade da GPU, execute o seguinte comando.
kubectl get nodes -o custom-columns='NAME:.metadata.name,ACCELERATOR_READY:.status.conditions[?(@.type=="AcceleratedHardwareReady")].status,REASON:.status.conditions[?(@.type=="AcceleratedHardwareReady")].reason'
Para visualizar eventos relacionados ao XID no seu cluster, execute um dos seguintes comandos.
kubectl get events | grep -i "NvidiaXID"
Problemas de integridade de nós com ContainerRuntime
Para os problemas listados na tabela abaixo com gravidade do tipo “Condição”, a condição de monitoramento utilizada é ContainerRuntimeReady.
| Nome | Gravidade | Descrição | Ação de reparo |
|---|---|---|---|
|
ContainerRuntimeFailed |
Event |
O runtime do contêiner falhou ao criar um contêiner, provavelmente relacionado a quaisquer problemas relatados, caso tenham ocorrido repetidamente. |
Nenhum |
|
DeprecatedContainerdConfiguration |
Event |
Uma imagem de contêiner usando a versão do manifesto de imagem obsoleta (versão 2 e esquema 1) foi extraída recentemente para o nó por meio do |
Nenhum |
|
KubeletFailed |
Event |
O kubelet entrou em um estado de falha. |
Nenhum |
|
LivenessProbeFailures |
Event |
Uma falha na sonda de liveness foi detectada, possivelmente indicando problemas no código da aplicação ou valores de tempo limite insuficientes, caso tenham ocorrido repetidamente. |
Nenhum |
|
PodStuckTerminating |
Condição |
Um pod está ou estava preso no encerramento por um tempo excessivo, o que pode ser causado por erros de CRI impedindo a progressão do estado do pod. |
Substituir |
|
ReadinessProbeFailures |
Event |
Uma falha na sonda de readiness foi detectada, possivelmente indicando problemas no código da aplicação ou valores de tempo limite insuficientes, caso tenham ocorrido repetidamente. |
Nenhum |
|
[Name]RepeatedRestart |
Event |
Uma unidade do systemd está reiniciando com frequência. |
Nenhum |
|
ServiceFailedToStart |
Event |
Uma unidade do systemd falhou ao iniciar. |
Nenhum |
Problemas de integridade de nós do kernel
Para os problemas listados na tabela abaixo com gravidade do tipo “Condição”, a condição de monitoramento utilizada é KernelReady.
| Nome | Gravidade | Descrição | Ação de reparo |
|---|---|---|---|
|
AppBlocked |
Event |
A tarefa foi bloqueada da programação por um longo período, o que geralmente ocorre devido a um bloqueio na entrada ou na saída. |
Nenhum |
|
AppCrash |
Event |
Uma aplicação no nó falhou. |
Nenhum |
|
ApproachingKernelPidMax |
Event |
A quantidade de processos está chegando ao limite máximo de PIDs permitido pela atual configuração |
Nenhum |
|
ApproachingMaxOpenFiles |
Event |
O número de arquivos abertos está se aproximando do número máximo de arquivos abertos possíveis, de acordo com as configurações atuais do kernel, após o qual a abertura de novos arquivos falhará. |
Nenhum |
|
ConntrackExceededKernel |
Event |
O rastreamento de conexões excedeu o máximo para o kernel e novas conexões não puderam ser estabelecidas, o que pode resultar em perda de pacotes. |
Nenhum |
|
ExcessiveZombieProcesses |
Event |
Processos que não podem ser totalmente recuperados estão se acumulando em grandes números, o que indica problemas na aplicação e pode levar a atingir os limites de processos do sistema. |
Nenhum |
|
ForkFailedOutOfPIDs |
Condição |
Uma chamada fork ou exec falhou porque o sistema ficou sem IDs de processo ou memória, o que pode ser causado por processos zumbis ou esgotamento da memória física. |
Substituir |
|
KernelBug |
Event |
Um bug do kernel foi detectado e relatado pelo próprio Kernel Linux, embora às vezes isso possa ser causado por nós com alto uso de CPU ou memória, levando ao atraso no processamento de eventos. |
Nenhum |
|
LargeEnvironment |
Event |
O número de variáveis de ambiente para este processo é maior do que o esperado. Isso pode ser causado pelo excesso de serviços com a configuração |
Nenhum |
|
RapidCron |
Event |
Um cron job está sendo executado com uma frequência maior que a cada cinco minutos neste nó, o que poderá afetar a performance se o trabalho consumir recursos significativos. |
Nenhum |
|
SoftLockup |
Event |
A CPU ficou paralisada por um determinado período de tempo. |
Nenhum |
Problemas de integridade de nós de rede
Para os problemas listados na tabela abaixo com gravidade do tipo “Condição”, a condição de monitoramento utilizada é NetworkingReady.
| Nome | Gravidade | Descrição | Ação de reparo |
|---|---|---|---|
|
BandwidthInExceeded |
Event |
Os pacotes foram enfileirados ou descartados porque a largura de banda agregada de entrada excedeu o máximo para a instância. |
Nenhum |
|
BandwidthOutExceeded |
Event |
Os pacotes foram enfileirados ou descartados porque a largura de banda agregada de saída excedeu o máximo para a instância. |
Nenhum |
|
ConntrackExceeded |
Event |
O rastreamento de conexões excedeu o máximo para a instância e novas conexões não puderam ser estabelecidas, o que pode resultar em perda de pacotes. |
Nenhum |
|
EFAErrorMetric |
Event |
As métricas do driver EFA indicam que há uma interface com degradação de performance. |
Nenhum |
|
IPAMDInconsistentState |
Event |
O arquivo de ponto de verificação do IPAMD, no disco, está inconsistente com os endereços IP registrados no runtime do contêiner. |
Nenhum |
|
IPAMDNoIPs |
Event |
O IPAMD está sem endereços IP disponíveis. |
Nenhum |
|
IPAMDNotReady |
Condição |
O IPAMD não consegue se conectar ao servidor da API. |
Substituir |
|
IPAMDNotRunning |
Condição |
Não foi possível localizar o processo da CNI do Amazon VPC em execução no sistema. |
Substituir |
|
IPAMDRepeatedlyRestart |
Event |
Ocorreram várias reinicializações no serviço do IPAMD. |
Nenhum |
|
InterfaceNotRunning |
Condição |
Esta interface parece não estar funcionando ou há problemas de rede. |
Substituir |
|
InterfaceNotUp |
Condição |
Esta interface parece não estar ativa ou há problemas de rede. |
Substituir |
|
KubeProxyNotReady |
Event |
O kube-proxy falhou ao observar ou listar recursos. |
Nenhum |
|
LinkLocalExceeded |
Event |
Os pacotes foram descartados porque o PPS do tráfego para os serviços de proxy local excedeu o máximo para a interface da rede. |
Nenhum |
|
MACAddressPolicyMisconfigured |
Event |
O valor definido para |
Nenhum |
|
MissingDefaultRoutes |
Event |
Há regras de rota padrão ausentes. |
Nenhum |
|
MissingIPRoutes |
Event |
Existem rotas ausentes para os endereços IP dos pods. |
Nenhum |
|
MissingIPRules |
Event |
Existem regras ausentes para os endereços IP dos pods. |
Nenhum |
|
MissingLoopbackInterface |
Condição |
A interface de loopback está ausente nesta instância, causando falha nos serviços que dependem da conectividade local. |
Substituir |
|
NetworkSysctl |
Event |
As configurações de |
Nenhum |
|
PPSExceeded |
Event |
Os pacotes foram enfileirados ou descartados porque o PPS bidirecional excedeu o máximo para a instância. |
Nenhum |
|
PortConflict |
Event |
Se um pod usar hostPort, ele pode gravar regras de |
Nenhum |
|
UnexpectedRejectRule |
Event |
Uma regra inesperada de |
Nenhum |
Problemas de integridade do nó de armazenamento
Para os problemas listados na tabela abaixo com gravidade do tipo “Condição”, a condição de monitoramento utilizada é StorageReady.
| Nome | Gravidade | Descrição | Ação de reparo |
|---|---|---|---|
|
EBSInstanceIOPSExceeded |
Event |
O limite máximo de IOPS da instância foi excedido. |
Nenhum |
|
EBSInstanceThroughputExceeded |
Event |
O limite máximo de throughput da instância foi excedido. |
Nenhum |
|
EBSVolumeIOPSExceeded |
Event |
O limite máximo de IOPS de um volume do EBS específico foi excedido. |
Nenhum |
|
EBSVolumeThroughputExceeded |
Event |
O limite máximo de throughput de um volume do Amazon EBS específico foi excedido. |
Nenhum |
|
EtcHostsMountFailed |
Event |
A montagem do arquivo |
Nenhum |
|
IODelays |
Event |
Atraso de entrada ou saída detectado em um processo, possivelmente indicando provisionamento insuficiente de entrada-saída, se excessivo. |
Nenhum |
|
KubeletDiskUsageSlow |
Event |
O |
Nenhum |
|
XFSSmallAverageClusterSize |
Event |
O tamanho médio do cluster XFS é pequeno, indicando fragmentação excessiva do espaço livre. Isso pode impedir a criação de arquivos, mesmo que haja inodes ou espaço livre disponíveis. |
Nenhum |
Configure o agente de monitoramento de nós
O agente de monitoramento de nós do EKS é implantado como DaemonSet. Ao realizar a implantação como um complemento do EKS, é possível personalizar a instalação com os seguintes valores de configuração. Para configurações padrão, consulte o chart do Helm
| Opção de configuração | Descrição |
|---|---|
|
|
Solicitação de recursos da CPU para o agente de monitoramento. |
|
|
Solicitação de recursos de memória para o agente de monitoramento. |
|
|
Limite de recursos da CPU para o agente de monitoramento. |
|
|
Limite de recursos de memória para o agente de monitoramento. |
|
|
Tolerâncias para a programação do agente de monitoramento em nós com taint. |
|
|
Argumentos adicionais da linha de comando a serem passados ao agente de monitoramento. |
nota
Você pode configurar hostname-override e verbosity como monitoringAgent.additionalArgs no caso dos complementos do EKS ou da instalação via Helm. No momento, não é possível personalizar o probe-address (8002) ou metrics-address (8003) do agente de monitoramento de nós por meio de argumentos adicionais com os complementos do EKS ou a instalação via Helm.
O agente de monitoramento de nós inclui um componente de servidor NVIDIA DCGM (Data Center GPU Manager) (nv-hostengine) para monitorar GPUs NVIDIA. Esse componente é executado apenas em nós que são do tipo de instância de GPU NVIDIA, conforme indicado por nodeAffinity no chart do Helm
Ao realizar a implantação do agente de monitoramento de nós do EKS como um complemento do EKS, é possível personalizar a instalação do NVIDIA DCGM com os seguintes valores de configuração.
| Opção de configuração | Descrição |
|---|---|
|
|
Solicitação de recursos da CPU para o agente DCGM. |
|
|
Solicitação de recursos de memória para o agente DCGM. |
|
|
Limite de recursos da CPU para o agente DCGM. |
|
|
Limite de recursos de memória para o agente DCGM. |
|
|
Tolerâncias para a programação do agente DCGM em nós comprometidos. |
Você pode usar os seguintes comandos da AWS CLI para obter informações úteis sobre as versões e o esquema do complemento do agente de monitoramento de nós do EKS.
Obtenha a versão mais recente do complemento do agente para a sua versão do Kubernetes. Substitua 1.35 pela sua versão do Kubernetes.
aws eks describe-addon-versions \ --addon-name eks-node-monitoring-agent \ --kubernetes-version 1.35 \ --query='addons[].addonVersions[].addonVersion'
Obtenha o esquema do complemento de agente com suporte em complementos do EKS. Substitua v1.5.1-eksbuild.1 pela versão do agente.
aws eks describe-addon-configuration \ --addon-name eks-node-monitoring-agent \ --addon-version v1.5.1-eksbuild.1