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.
Habilitar o reparo automático de nós e investigar os problemas de integridade de nós
A integridade do nó refere-se ao status operacional e à capacidade de um nó executar workloads com eficiência. Um nó íntegro mantém a conectividade esperada, tem recursos suficientes e pode executar pods com sucesso sem interrupções. Para obter informações sobre como obter detalhes sobre os nós, consulte Visualizar o status de integridade dos nós e Recuperar logs de nós de um nó gerenciado usando kubectl e S3.
Para ajudar a manter os nós íntegros, o Amazon EKS oferece o agente de monitoramento de nós e o reparo automático de nós.
Importante
O agente de monitoramento de nós e o reparo automático de nós estão disponíveis somente no Linux. Estes recursos não estão disponíveis no Windows.
Agente de monitoramento de nós
O agente de monitoramento de nós lê automaticamente os logs dos nós para detectar determinados problemas de integridade. Ele analisa os logs dos nós para detectar falhas e apresenta várias informações de status sobre os nós de processamento. Uma NodeCondition dedicada é aplicada nos nós de processamento para cada categoria de problemas detectados, como problemas de armazenamento e rede. As descrições dos problemas de integridade detectados são disponibilizadas no painel de observabilidade. Para obter mais informações, consulte Problemas de integridade de nós.
O agente de monitoramento de nós está incluído como um recurso para todos os clusters do Modo Automático do Amazon EKS. Para outros tipos de cluster, você pode adicionar o agente de monitoramento como um complemento do Amazon EKS. Para obter mais informações, consulte Criar um complemento do Amazon EKS.
Reparo automático de nós
O reparo automático de nós é um recurso adicional que monitora continuamente a integridade dos nós, reagindo automaticamente aos problemas detectados e substituindo os nós quando possível. Isso ajuda na disponibilidade geral do cluster com o mínimo de intervenção manual. Se uma verificação de integridade falhar, o nó será automaticamente isolado para que nenhum novo pod seja programado no nó.
Por si só, o reparo automático de nós pode reagir à condição Ready do kubelet e a quaisquer objetos de nós que sejam excluídos manualmente. Quando combinado com o agente de monitoramento de nós, o reparo automático de nós pode reagir a mais condições que não seriam detectadas de outra forma. Essas condições adicionais incluem KernelReady, NetworkingReady e StorageReady.
Essa recuperação automatizada de nós resolve automaticamente problemas de nós intermitentes, como falhas na união ao cluster, kubelets que não respondem e aumento de erros no acelerador (dispositivo). A confiabilidade aprimorada ajuda a reduzir o tempo de inatividade da aplicação e a melhorar as operações do cluster. O reparo automático de nós não pode lidar com certos problemas relatados, como DiskPressure, MemoryPressure e PIDPressure. O Amazon EKS espera dez minutos antes de agir nas NodeConditions AcceleratedHardwareReady, e 30 minutos para todas as outras condições.
Os grupos de nós gerenciados também desabilitarão automaticamente os reparos de nós por motivos de segurança em dois cenários. Quaisquer operações de reparo que estejam previamente em andamento continuarão em ambas as situações.
-
Se uma mudança de zona para o cluster tiver sido acionada por meio do Application Recovery Controller (ARC), todas as operações de reparo subsequentes serão interrompidas.
-
Se o grupo de nós tiver mais de cinco nós, e mais de 20% dos nós no grupo de nós estiverem em um estado não íntegro, as operações de reparo serão interrompidas.
Você pode habilitar o reparo automático de nós ao criar ou editar um grupo de nós gerenciados.
-
Ao usar o console do Amazon EKS, ative a caixa de seleção Habilitar reparo automático de nós para o grupo de nós gerenciados. Para obter mais informações, consulte Criar um grupo de nós gerenciados para seu cluster.
-
Ao usar a AWS CLI, adicione o parâmetro
--node-repair-config enabled=trueao comandoeks create nodegroupoueks update-nodegroup-config. -
Para ver um exemplo do
ClusterConfigeksctlque usa um grupo de nós gerenciados com reparo automático de nós, consulte 44-node-repair.yamlno GitHub.
O Amazon EKS fornece um controle mais detalhado sobre o comportamento de reparo automático de nós por meio dos seguintes itens:
-
maxUnhealthyNodeThresholdCounte damaxUnhealthyNodeThresholdPercentage-
Com esses campos, você pode definir um limite para o número ou porcentagem de nós com problemas de integridade. Caso esse limite seja ultrapassado, as ações de reparo automático de nós são suspensas. Isso garante maior controle sobre o “raio de impacto” dos reparos automáticos.
-
É possível configurar a contagem absoluta ou a porcentagem, mas nunca as duas simultaneamente.
-
-
maxParallelNodesRepairedCounte damaxParallelNodesRepairedPercentage-
Esses campos permitem especificar o número máximo de nós que podem ser reparados simultaneamente ou em paralelo, expresso como um valor absoluto ou uma porcentagem de todos os nós não íntegros. Isso proporciona um controle mais detalhado da velocidade das substituições de nós.
-
Assim como ocorre no limite de nós não íntegros, é possível configurar a contagem absoluta ou a porcentagem, mas nunca as duas simultaneamente.
-
-
nodeRepairConfigOverrides-
Esta é uma estrutura complexa que permite configurar substituições granulares para ações de reparo específicas. Essas substituições controlam a ação de reparo e o tempo de espera antes que um nó seja considerado apto para o processo de reparo.
-
Os campos específicos nesta estrutura são:
-
nodeMonitoringCondition: a condição de não integridade relatada pelo agente de monitoramento do nó. -
nodeUnhealthyReason: o motivo pelo qual o agente de monitoramento do nó identificou o nó como não íntegro. -
minRepairWaitTimeMins: o tempo mínimo (em minutos) que a condição de reparo e o motivo da não integridade devem persistir antes que o nó seja elegível para reparo. -
repairAction: a ação que o sistema de reparo deve realizar quando as condições acima forem atendidas.
-
-
Ao utilizar este campo, é necessário especificar todos os campos na estrutura. Além disso, você pode fornecer uma lista dessas substituições.
-
O
nodeMonitoringConditione onodeUnhealthyReasonsão campos de entrada de texto manual que você define para indicar que deseja divergir do comportamento padrão do sistema. -
Os campos
minRepairWaitTimeMinserepairActionpermitem que você especifique divergências em relação ao comportamento padrão do sistema.
-
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.
Se o reparo automático estiver habilitado, as ações de reparo listadas serão iniciadas dez minutos após a detecção do problema. Para obter mais informações sobre erros do XID, consulte Xid Errors
| Nome | Gravidade | Descrição |
|---|---|---|
|
DCGMDiagnosticFailure |
Condição |
Um caso de teste do conjunto de testes de diagnóstico ativo do DCGM falhou. |
|
DCGMError |
Condição |
Houve perda de conexão com o processo host do DCGM ou não foi possível estabelecê-la. |
|
DCGMFieldError[Code] |
Event |
O DCGM detectou degradação da GPU por meio de um identificador de campo. |
|
DCGMHealthCode[Code] |
Event |
Uma verificação de integridade do DCGM falhou de forma não fatal. |
|
DCGMHealthCode[Code] |
Condição |
Uma verificação de integridade do DCGM falhou de forma fatal. |
|
NeuronDMAError |
Condição |
Um mecanismo de DMA encontrou um erro irrecuperável. |
|
NeuronHBMUncorrectableError |
Condição |
Um HBM encontrou um erro incorrigível e produziu resultados incorretos. |
|
NeuronNCUncorrectableError |
Condição |
Foi detectado um erro de memória incorrigível do Neuron Core. |
|
NeuronSRAMUncorrectableError |
Condição |
Uma SRAM no chip encontrou um erro de paridade e produziu resultados incorretos. |
|
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. |
|
NvidiaDoubleBitError |
Condição |
Um erro de dois bits foi produzido pelo driver da GPU. |
|
NvidiaNCCLError |
Event |
Ocorreu uma falha de segmentação na NVIDIA Collective Communications Library ( |
|
NvidiaNVLinkError |
Condição |
Erros do NVLink foram relatados pelo driver da GPU. |
|
NvidiaPCIeError |
Event |
As retransmissões de PCIe foram acionadas para a recuperação de erros de transmissão. |
|
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. |
|
NvidiaPowerError |
Event |
O uso de energia pelas GPUs ultrapassou os limites permitidos. |
|
NvidiaThermalError |
Event |
O status térmico das GPUs ultrapassou os limites permitidos. |
|
NvidiaXID[Code]Error |
Condição |
Ocorreu um erro crítico relacionado com a GPU. |
|
NvidiaXID[Code]Warning |
Event |
Ocorreu um erro não crítico relacionado com a GPU. |
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 |
|---|---|---|
|
ContainerRuntimeFailed |
Event |
O runtime do contêiner falhou ao criar um contêiner, provavelmente relacionado a quaisquer problemas relatados, caso tenham ocorrido repetidamente. |
|
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 |
|
KubeletFailed |
Event |
O kubelet entrou em um estado de falha. |
|
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. |
|
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. |
|
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. |
|
[Name]RepeatedRestart |
Event |
Uma unidade do systemd está reiniciando com frequência. |
|
ServiceFailedToStart |
Event |
Uma unidade do systemd falhou ao iniciar. |
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 |
|---|---|---|
|
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. |
|
AppCrash |
Event |
Uma aplicação no nó falhou. |
|
ApproachingKernelPidMax |
Event |
A quantidade de processos está chegando ao limite máximo de PIDs permitido pela atual configuração |
|
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á. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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 |
|
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. |
|
SoftLockup |
Event |
A CPU ficou paralisada por um determinado período de tempo. |
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 |
|---|---|---|
|
BandwidthInExceeded |
Event |
Os pacotes foram enfileirados ou descartados porque a largura de banda agregada de entrada excedeu o máximo para a instância. |
|
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. |
|
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. |
|
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. |
|
IPAMDNoIPs |
Event |
O IPAMD está sem endereços IP disponíveis. |
|
IPAMDNotReady |
Condição |
O IPAMD não consegue se conectar ao servidor da API. |
|
IPAMDNotRunning |
Condição |
Não foi possível localizar o processo da CNI do Amazon VPC em execução no sistema. |
|
IPAMDRepeatedlyRestart |
Event |
Ocorreram várias reinicializações no serviço do IPAMD. |
|
InterfaceNotRunning |
Condição |
Esta interface parece não estar funcionando ou há problemas de rede. |
|
InterfaceNotUp |
Condição |
Esta interface parece não estar ativa ou há problemas de rede. |
|
KubeProxyNotReady |
Event |
O kube-proxy falhou ao observar ou listar recursos. |
|
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. |
|
MACAddressPolicyMisconfigured |
Event |
O valor definido para |
|
MissingDefaultRoutes |
Event |
Há regras de rota padrão ausentes. |
|
MissingIPRoutes |
Event |
Existem rotas ausentes para os endereços IP dos pods. |
|
MissingIPRules |
Event |
Existem regras ausentes para os endereços IP dos pods. |
|
MissingLoopbackInterface |
Condição |
A interface de loopback está ausente nesta instância, causando falha nos serviços que dependem da conectividade local. |
|
NetworkSysctl |
Event |
As configurações de |
|
PPSExceeded |
Event |
Os pacotes foram enfileirados ou descartados porque o PPS bidirecional excedeu o máximo para a instância. |
|
PortConflict |
Event |
Se um pod usar hostPort, ele pode gravar regras de |
|
UnexpectedRejectRule |
Event |
Uma regra inesperada de |
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 |
|---|---|---|
|
EBSInstanceIOPSExceeded |
Event |
O limite máximo de IOPS da instância foi excedido. |
|
EBSInstanceThroughputExceeded |
Event |
O limite máximo de throughput da instância foi excedido. |
|
EBSVolumeIOPSExceeded |
Event |
O limite máximo de IOPS de um volume do EBS específico foi excedido. |
|
EBSVolumeThroughputExceeded |
Event |
O limite máximo de throughput de um volume do Amazon EBS específico foi excedido. |
|
EtcHostsMountFailed |
Event |
A montagem do arquivo |
|
IODelays |
Event |
Atraso de entrada ou saída detectado em um processo, possivelmente indicando provisionamento insuficiente de entrada-saída, se excessivo. |
|
KubeletDiskUsageSlow |
Event |
O |
|
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. |