Use este guia para diagnosticar exceções em nós, aplicar abordagens comuns de solução de problemas e resolver questões para restaurar o status saudável dos nós.
Conteúdo
Categoria | Conteúdo |
Procedimento de diagnóstico | {{XREF_0}} |
Métodos comuns de solução de problemas |
|
Problemas comuns e soluções |
|
Procedimento de diagnóstico
-
Verifique se um nó está anormal. Para obter mais informações, consulte {{XREF_24}}.
-
Se um nó estiver no estado Not Ready, execute as etapas a seguir para solucionar o problema:
Verifique as informações de status do nó para ver se as condições do nó, como PIDPressure, DiskPressure e MemoryPressure, estão definidas como True. Se uma condição do nó for True, solucione o problema com base nessa condição. Para soluções, consulte {{XREF_25}}, {{XREF_26}} e {{XREF_27}}.
-
Verifique os componentes principais e os logs do nó.
-
Kubelet
Verifique o status, os logs e a configuração do kubelet em busca de anomalias. Para obter mais informações, consulte {{XREF_28}}.
Se o kubelet estiver anormal, consulte {{XREF_29}}.
-
Dockerd
Verifique o status, os logs e a configuração do dockerd em busca de anomalias. Para obter mais informações, consulte {{XREF_30}}.
Se o dockerd estiver anormal, consulte {{XREF_31}}.
-
Containerd
Verifique o status, os logs e a configuração do containerd em busca de anomalias. Para obter mais informações, consulte {{XREF_32}}.
Se o containerd estiver anormal, consulte {{XREF_33}}.
-
NTP
Verifique o status, os logs e a configuração do serviço NTP em busca de anomalias. Para obter mais informações, consulte {{XREF_34}}.
Se o serviço NTP estiver anormal, consulte {{XREF_35}}.
-
Colete e verifique os logs de diagnóstico do nó. Para obter mais informações, consulte {{XREF_36}}.
Verifique nos dados de monitoramento do nó se há carga anormal de recursos (como CPU, memória e rede). Para obter mais informações, consulte {{XREF_37}}. Se a carga do nó for anormal, consulte {{XREF_38}} e {{XREF_39}} para obter soluções.
-
Se um nó estiver no estado Unknown, execute as etapas a seguir para solucionar o problema:
Verifique se a instância ECS subjacente está no estado Running.
-
Verifique os componentes principais do nó.
-
Kubelet
Verifique o status, os logs e a configuração do kubelet em busca de anomalias. Para obter mais informações, consulte {{XREF_40}}.
Se o kubelet estiver anormal, consulte {{XREF_41}}.
-
Dockerd
Verifique o status, os logs e a configuração do dockerd em busca de anomalias. Para obter mais informações, consulte {{XREF_42}}.
Se o dockerd estiver anormal, consulte {{XREF_43}}.
-
Containerd
Verifique o status, os logs e a configuração do containerd em busca de anomalias. Para obter mais informações, consulte {{XREF_44}}.
Se o containerd estiver anormal, consulte {{XREF_45}}.
-
NTP
Verifique o status, os logs e a configuração do serviço NTP em busca de anomalias. Para obter mais informações, consulte {{XREF_46}}.
Se o serviço NTP estiver anormal, consulte {{XREF_47}}.
-
Verifique a conectividade de rede do nó. Para obter mais informações, consulte {{XREF_48}}. Se ocorrer uma exceção de rede no nó, consulte {{XREF_49}} para obter uma solução.
Colete e verifique os logs de diagnóstico do nó. Para obter mais informações, consulte {{XREF_50}}.
Verifique nos dados de monitoramento do nó se há carga anormal de recursos (como CPU, memória e rede). Para obter mais informações, consulte {{XREF_51}}. Se a carga do nó for anormal, consulte {{XREF_52}} e {{XREF_53}} para obter soluções.
-
Se esse procedimento de diagnóstico não resolver o problema, use o recurso de diagnóstico de nó no Container Service for Kubernetes (ACK). Para obter mais informações, consulte {{XREF_54}}.
Métodos comuns de solução de problemas
Diagnosticar falhas de nó
Se um nó falhar, use o recurso Diagnóstico de Exceção do ACK para diagnosticá-lo.
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Nodes, localize o nó de destino e escolha na coluna Actions.
No painel que aparece, clique em Create Diagnosis. Em seguida, visualize os resultados do diagnóstico e as sugestões de correção no console.
Verificar detalhes do nó
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Nodes, clique no nome do nó de destino ou clique em Details na coluna Actions para visualizar seus detalhes.
Verificar status do nó
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
-
Na página Nodes, visualize o status do nó.
Se o status do nó for Ready, o nó está funcionando conforme o esperado.
-
Se o status do nó não for Ready, clique no nome do nó de destino ou clique em Details na coluna Actions correspondente para visualizar seus detalhes.
NotaPara coletar informações sobre condições como
InodesPressure,DockerOfflineeRuntimeOffline, você deve instalar o node-problem-detector no seu cluster e criar um K8s Event Center. A opção de criar um K8s Event Center é selecionada por padrão durante a criação do cluster. Para obter mais informações, consulte {{XREF_55}}.
Verificar eventos do nó
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
-
Na página Nodes, clique no nome do nó de destino ou clique em Details na coluna Actions para visualizar seus detalhes.
Os eventos do nó são exibidos na bottom da página de detalhes.
Coletar logs de diagnóstico do nó
Use o Container Intelligence Service no console para coletar logs de diagnóstico. Para obter mais informações, consulte {{XREF_56}}.
Use um script para coletar logs de diagnóstico. Para obter mais informações, consulte {{XREF_57}}.
Verificar componentes principais do nó
-
kubelet
-
Verificar o status do kubelet
Faça login no nó e execute o comando a seguir para verificar o status do kubelet:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fiSaída esperada:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Verificar os logs do kubelet
Faça login no nó e execute o comando a seguir para visualizar os logs do kubelet. Para obter mais informações sobre como visualizar logs do kubelet, consulte {{XREF_58}}.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Verificar a configuração do kubelet
Faça login no nó e execute o comando a seguir para visualizar a configuração do kubelet:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi
-
-
Runtime
-
Verificar o dockerd
-
Verificar o status do dockerd
Faça login no nó e execute o comando a seguir para verificar o status do dockerd:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fiSaída esperada:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Verificar os logs do dockerd
Faça login no nó e execute o comando a seguir para visualizar os logs do dockerd. Para obter mais informações sobre como visualizar logs do dockerd, consulte {{XREF_59}}.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Verificar a configuração do dockerd
Faça login no nó e execute o comando a seguir para visualizar a configuração do dockerd:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi
-
-
Verificar o containerd
-
Verificar o status do containerd
Faça login no nó e execute o comando a seguir para verificar o status do containerd:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fiSaída esperada:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Verificar os logs do containerd
Faça login no nó e execute o comando a seguir para visualizar os logs do containerd. Para obter mais informações sobre como visualizar logs do containerd, consulte {{XREF_60}}.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi
-
-
-
Verificar NTP
-
Verificar o status do serviço NTP
Faça login no nó e execute o comando a seguir para verificar o status do processo chronyd:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fiSaída esperada:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Verificar os logs do serviço NTP
Faça login no nó e execute o comando a seguir para visualizar os logs do NTP:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi
-
Verificar dados de monitoramento do nó
-
Cloud Monitor
O ACK integra-se ao CloudMonitor. Visualize os dados básicos de monitoramento das instâncias ECS correspondentes no console do CloudMonitor. Para obter mais informações sobre como monitorar nós com o CloudMonitor, consulte {{XREF_61}}.
-
Managed Service for Prometheus
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
Na página Prometheus Monitoring, clique na aba Node Monitoring e, em seguida, clique na aba Nodes.
Na página Nodes, selecione um nó para visualizar suas métricas de monitoramento, como uso de CPU, memória e disco.
Verificar grupos de segurança do nó
Para obter mais informações sobre como verificar grupos de segurança de nós, consulte {{XREF_62}} e {{XREF_63}}.
Solução de problemas de exceções do kubelet
Causa
As causas típicas incluem um processo Kubelet anormal, uma exceção no runtime de contêiner ou uma configuração incorreta do Kubelet.
Sintomas
O status do Kubelet é inactive.
Solução
-
Execute o comando a seguir para reiniciar o Kubelet. Essa ação não afeta os contêineres em execução.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Após a reinicialização do Kubelet, faça login no nó e execute o comando a seguir para verificar seu status.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Se o status do Kubelet permanecer anormal, faça login no nó e execute o comando a seguir para visualizar seus logs.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fiSe os logs contiverem mensagens de erro específicas, use palavras-chave dessas mensagens para solucionar o problema.
-
Se a configuração do Kubelet estiver incorreta, execute os comandos a seguir para corrigi-la.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi
Exceção do dockerd: RuntimeOffline
Causa
As causas comuns incluem uma configuração inválida do dockerd, alta carga de processos ou alta carga do nó.
Sintomas
O status do dockerd é inactive.
O status do dockerd é active (running), mas o daemon apresenta mau funcionamento, causando uma exceção no nó. Comandos como
docker psedocker execpodem falhar.A condição RuntimeOffline do nó é True.
Uma exceção do dockerd aciona um alerta se você tiver configurado alertas para exceções de nós do cluster. Para obter mais informações sobre como configurar regras de alerta, consulte {{XREF_64}}.
Solução
-
Execute o comando a seguir para reiniciar o dockerd:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Faça login no nó e execute o comando a seguir para verificar o status do dockerd:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Se o status permanecer anormal, verifique os logs do dockerd:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi
Exceção do containerd: RuntimeOffline
Causa
Esse problema geralmente é causado por uma configuração inválida do containerd, alta carga de processos ou alta carga do nó.
O status do containerd é inactive.
A condição RuntimeOffline do nó é True.
Se o alerta estiver configurado para exceções de nós do cluster, você será notificado quando ocorrer uma exceção do containerd. Para obter mais informações, consulte {{XREF_65}}.
Solução
-
Execute o comando a seguir para reiniciar o containerd:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Após a reinicialização do containerd, faça login no nó e execute o comando a seguir para verificar seu status:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Se o status permanecer anormal após a reinicialização, faça login no nó e execute o comando a seguir para visualizar os logs do containerd:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi
Exceção de NTP: NTPProblem
Causa
Um processo NTP anormal normalmente causa esse problema.
Sintomas
O status do chronyd é inactive.
A condição do nó NTPProblem é True.
Se você configurou alertas para exceções de nós do cluster, receberá um alerta quando o serviço de tempo de um nó estiver anormal. Para obter mais informações sobre como configurar alertas, consulte {{XREF_66}}.
Solução
-
Execute o comando a seguir para reiniciar o chronyd:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Após a reinicialização do chronyd, faça login no nó e execute o comando a seguir para verificar se seu status está normal:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Se o status ainda estiver anormal após a reinicialização, faça login no nó e execute o comando a seguir para visualizar os logs do chronyd:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi
PLEG is not healthy
Causa
O Pod Lifecycle Event Generator (PLEG) registra eventos durante todo o ciclo de vida do pod, como inicializações e encerramentos de contêineres. A exceção PLEG is not healthy geralmente é causada por problemas com o runtime de contêiner no nó ou por um defeito na versão do systemd do nó.
Sintomas
O status do nó é NotReady.
-
Os logs do kubelet contêm a seguinte entrada.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi Se você configurou alertas para exceções de nós do cluster, receberá um alerta quando ocorrer uma exceção do PLEG. Para configurar alertas, consulte {{XREF_67}}.
Solução
Reinicie os componentes principais do nó dockerd/containerd e kubelet em sequência e verifique se o nó se recuperou.
-
Se reiniciar os componentes principais não resolver o problema, reinicie o nó. Consulte {{XREF_68}} para obter instruções.
AvisoReiniciar o nó pode interromper suas cargas de trabalho. Prossiga com cautela.
Se o nó executar o CentOS 7.6, consulte Erro "PLEG is not healthy" nos logs do kubelet no CentOS 7.6Erro "Reason:KubeletNotReady Message:PLEG is not healthy:" nos logs do kubelet no CentOS 7.6.
Recursos insuficientes para agendamento no nó
Causa
Esse problema geralmente ocorre quando os nós do cluster têm recursos insuficientes.
Sintomas
Se os nós do cluster tiverem recursos insuficientes, os pods falharão no agendamento e você poderá ver uma das seguintes mensagens de erro:
Recursos de CPU insuficientes: 0/2 nodes are available: 2 Insufficient cpu
Recursos de memória insuficientes: 0/2 nodes are available: 2 Insufficient memory
Armazenamento efêmero insuficiente: 0/2 nodes are available: 2 Insufficient ephemeral-storage
O agendador usa as seguintes fórmulas para determinar se um nó tem recursos insuficientes:
Um nó tem CPU insuficiente se: Solicitação de CPU do pod > (CPU alocável do nó - CPU alocada do nó)
Um nó tem memória insuficiente se: Solicitação de memória do pod > (Memória alocável do nó - Memória alocada do nó)
Um nó tem armazenamento efêmero insuficiente se: Solicitação de armazenamento efêmero do pod > (Armazenamento efêmero alocável do nó - Armazenamento efêmero alocado do nó)
Um pod não será agendado em um nó se suas solicitações totais de recursos excederem os recursos disponíveis do nó (alocáveis menos alocados).
Execute o comando a seguir para visualizar os detalhes de alocação de recursos de um nó:
if service auditd status |grep running || systemctl status auditd |grep running; then
sudo service auditd restart || sudo systemctl restart auditd
sudo service auditd status || sudo systemctl status auditd
fi
Observe as seguintes seções na saída:
if service auditd status |grep running || systemctl status auditd |grep running; then
sudo service auditd restart || sudo systemctl restart auditd
sudo service auditd status || sudo systemctl status auditd
fi
Na saída:
Allocatable: A quantidade total de recursos alocáveis (como CPU, memória e armazenamento efêmero) no nó.
Allocated resources: O total de recursos alocados para pods no nó.
Solução
Para resolver esse problema, reduza a carga do nó usando um dos métodos a seguir:
Exclua pods desnecessários para reduzir a carga do nó. Para obter mais informações, consulte {{XREF_69}}.
Ajuste a configuração de recursos para seus pods com base nos requisitos do seu negócio. Para obter mais informações, consulte {{XREF_70}}.
Você pode usar o recurso de perfil de recursos fornecido pelo ACK para obter sugestões de configuração de recursos para contêineres com base nos dados históricos de uso de recursos. Isso simplifica a configuração de solicitações e limites de recursos para contêineres. Para obter mais informações, consulte {{XREF_71}}.
Adicione novos nós ao cluster. Para obter mais informações, consulte {{XREF_72}}.
Atualize as configurações do nó. Para obter mais informações, consulte {{XREF_73}}.
Para obter mais informações, consulte {{XREF_74}}, {{XREF_75}} e {{XREF_76}}.
Recursos de CPU insuficientes no nó
Causa
Contêineres que consomem recursos excessivos de CPU em um nó geralmente causam esse problema.
Sintomas
Recursos insuficientes de CPU podem fazer com que o status do nó fique anormal.
Se houver alertas configurados para exceções de nós do cluster, um alerta será acionado quando a utilização da CPU do nó atingir ou exceder 85%. Para obter mais informações sobre como configurar alertas, consulte {{XREF_77}}.
Solução
Analise a curva de utilização da CPU do nó para identificar quando a exceção ocorreu e quais processos no nó estão consumindo recursos excessivos de CPU. Para obter mais informações, consulte {{XREF_78}}.
Reduza a carga no nó. Para obter mais informações, consulte {{XREF_79}}.
-
Se necessário, reinicie o nó afetado. Para obter mais informações, consulte {{XREF_80}}.
AvisoReiniciar o nó pode interromper seus serviços. Prossiga com cautela.
Memória insuficiente no nó - MemoryPressure
Causa
Esse problema geralmente ocorre quando os contêineres em um nó consomem memória excessiva, deixando o nó com memória disponível insuficiente.
Sintomas
Quando a memória disponível de um nó cai abaixo do limiar especificado por
memory.available, a condição MemoryPressure do nó é definida como True e os contêineres no nó são despejados. Para obter mais informações sobre a expulsão de nós, consulte Node-pressure Eviction.-
Quando um nó está com pouca memória, você pode observar os seguintes sintomas comuns:
A condição MemoryPressure do nó é True.
-
Quando os contêineres no nó são despejados:
Os eventos dos contêineres despejados incluem a mensagem The node was low on resource: memory.
Os eventos do nó incluem a mensagem attempting to reclaim memory.
Um System OOM também pode ocorrer, o que é indicado pela mensagem System OOM nos eventos do nó.
Você pode configurar alertas para ser notificado quando o uso de memória de um nó atingir ou exceder 85%. Consulte {{XREF_81}} para saber como fazer isso.
Solução
Analise a curva de uso de memória nos dados de monitoramento do nó para identificar quando o problema ocorreu e inspecione os processos em execução em busca de vazamentos de memória. Para obter mais informações, consulte {{XREF_82}}.
Reduza a carga no nó. Para obter mais informações, consulte {{XREF_83}}.
-
Se necessário, reinicie o nó afetado. Para obter mais informações, consulte {{XREF_84}}.
AvisoCuidado: Reiniciar um nó pode interromper seus serviços.
Inodes insuficientes - InodesPressure
Causa
Esse problema geralmente ocorre quando os contêineres em um nó consomem inodes em excesso.
Sintomas
Quando o número de inodes disponíveis em um nó cai abaixo do limiar
inodesFree, sua condição InodesPressure é definida como True e os contêineres no nó são despejados. Para obter mais informações, consulte node-pressure eviction.-
Quando um nó está com poucos inodes, você pode ver as seguintes mensagens de erro comuns:
A condição do nó InodesPressure é True.
-
Quando os contêineres no nó são despejados:
Os eventos dos contêineres despejados contêm a mensagem: The node was low on resource: inodes.
Os eventos do nó contêm a mensagem: attempting to reclaim inodes.
Se você configurou alertas para exceções de nó no seu cluster, será alertado quando um nó estiver com poucos inodes. Para obter mais informações sobre como configurar alertas, consulte {{XREF_85}}.
Solução
Verifique a curva de uso de inodes nos dados de monitoramento do nó para identificar quando a exceção ocorreu e identificar quaisquer processos que estejam consumindo inodes em excesso. Para obter mais informações, consulte {{XREF_86}}.
Para solucionar outros problemas relacionados, consulte {{XREF_87}}.
PIDs insuficientes - NodePIDPressure
Causa
Esse problema ocorre quando os contêineres em um nó consomem muitos PIDs, esgotando os PIDs disponíveis do nó.
Sintomas
Quando os PIDs disponíveis de um nó caem abaixo do limiar
pid.available, sua condição NodePIDPressure é definida como True e os pods no nó são despejados. Para obter mais informações sobre a expulsão de nós, consulte Node-pressure Eviction.Se você configurou alertas para exceções de nó no seu cluster, receberá um alerta quando um nó ficar com poucos PIDs. Para obter mais informações sobre como configurar alertas, consulte {{XREF_88}}.
Solução
-
Execute os comandos a seguir para verificar o número máximo de PIDs no nó e o PID mais alto atualmente em uso.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Execute o comando a seguir para identificar os cinco processos que mais consomem PIDs.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fiSaída esperada:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi Use o ID do processo para encontrar o processo e o pod correspondentes. Analise por que o processo está consumindo tantos PIDs e otimize o código da aplicação.
Reduza a carga no nó. Para obter mais informações, consulte {{XREF_89}}.
-
Se necessário, reinicie o nó afetado. Para obter mais informações, consulte {{XREF_90}}.
AvisoReiniciar o nó pode interromper seus serviços. Tenha cautela.
Espaço em disco insuficiente - DiskPressure
Causa
Geralmente, um nó fica sem espaço em disco porque os contêineres consomem espaço excessivo em disco ou as imagens de contêiner são muito grandes.
Sintomas
Quando o espaço em disco disponível para imagens de contêiner em um nó cai abaixo do limiar
imagefs.available, a condição DiskPressure do nó torna-se True.Quando o espaço em disco disponível no sistema de arquivos raiz do nó cai abaixo do limiar
nodefs.available, todos os Pods nesse nó são despejados. Para obter mais informações sobre a expulsão por pressão do nó, consulte node-pressure eviction.-
Quando um nó fica sem espaço em disco, você normalmente vê as seguintes mensagens de erro:
A condição DiskPressure do nó é True.
Depois que a coleta de lixo de imagens é executada, se o espaço em disco permanecer abaixo do limiar de integridade (padrão: 80%), você pode encontrar a palavra-chave failed to garbage collect required amount of images nos eventos do nó.
-
Quando os Pods são despejados do nó:
Nos eventos dos Pods despejados, você pode encontrar a palavra-chave The node was low on resource: [DiskPressure].
Nos eventos do nó, você pode encontrar palavras-chave como attempting to reclaim ephemeral-storage ou attempting to reclaim nodefs.
Se você configurou alertas para exceções de nó, receberá um alerta se o uso de disco de um nó atingir 85% ou mais. Para obter mais informações sobre como configurar alertas, consulte {{XREF_91}}.
Solução
Verifique os dados de monitoramento do nó para visualizar a curva de uso do disco. Isso ajuda a identificar quando o uso aumentou e determinar se algum processo está consumindo espaço excessivo em disco. Para obter mais informações, consulte {{XREF_92}}.
Exclua arquivos desnecessários do disco para liberar espaço. Para obter instruções, consulte {{XREF_93}}.
Com base nos requisitos da sua carga de trabalho, defina solicitações e limites de recursos para
ephemeral-storagenas especificações do seu Pod. Para obter mais informações, consulte {{XREF_94}}.Use serviços de armazenamento da Alibaba Cloud em vez de volumes hostPath. Para obter mais informações, consulte {{XREF_95}}.
Aumente o tamanho do disco do nó.
Reduza a carga do nó. Para obter mais informações, consulte {{XREF_96}}.
Endereços IP insuficientes no nó - InvalidVSwitchId.IpNotEnough
Causa
Esse problema ocorre quando um número excessivo de contêineres em um nó esgota os endereços IP disponíveis.
Sintomas
-
Os Pods falham ao iniciar e ficam presos no status ContainerCreating. Os logs do Pod mostram uma mensagem de erro que contém a palavra-chave InvalidVSwitchId.IpNotEnough. Para obter mais informações sobre como visualizar logs de Pod, consulte {{XREF_97}}.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi Se você configurou alertas para o seu cluster, receberá um alerta quando um nó ficar sem endereços IP. Para obter mais informações sobre como configurar alertas, consulte {{XREF_98}}.
Solução
Reduza o número de contêineres no nó. Para obter mais informações, consulte {{XREF_99}}. Para outras soluções relacionadas, consulte Endereços IP insuficientes do VSwitch em um ambiente de rede TerwayO que fazer se um VSwitch fornecer endereços IP insuficientes em um cluster Terway e {{XREF_100}}.
Exceções de rede do nó
Causa
Esse problema geralmente resulta de um status anormal do nó, grupos de segurança mal configurados ou alta carga de rede.
Sintomas
Você não consegue fazer login no nó.
O status do nó é Unknown.
Se você configurou alertas para exceções de nós do cluster, receberá um alerta quando a utilização da largura de banda de saída da Internet do nó atingir 85% ou mais. Para obter mais informações, consulte {{XREF_101}}.
Solução
-
Se você não conseguir fazer login no nó, siga estas etapas:
Verifique se a instância do nó está no status Running.
Verifique a configuração do grupo de segurança do nó. Para obter mais informações, consulte {{XREF_102}}.
-
Se a carga de rede do nó for alta, siga estas etapas:
Verifique a curva de uso de rede do nó nos dados de monitoramento para identificar pods que consomem largura de banda excessiva. Para obter mais informações, consulte {{XREF_103}}.
Use políticas de rede para controlar o tráfego dos pods. Para obter mais informações, consulte {{XREF_104}}.
Reinicializações inesperadas do nó
Causa
Esse problema geralmente é causado por uma carga anormal do nó.
Sintomas
Enquanto o nó está reiniciando, seu status é NotReady.
Se você configurou alertas para exceções de nós do cluster, receberá um alerta quando um nó for reiniciado inesperadamente. Para obter mais informações, consulte {{XREF_105}}.
Solução
-
Execute o comando a seguir para verificar o horário de reinicialização do nó.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fiSaída esperada:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi Verifique os dados de monitoramento do nó e investigue quaisquer anomalias de recursos com base no horário de reinicialização. Para obter mais informações, consulte {{XREF_106}}.
Verifique os logs do kernel do nó e procure por logs de erro que correspondam ao horário de reinicialização. Para obter mais informações, consulte {{XREF_107}}.
Alto I/O de disco do auditd ou erro "audit: backlog limit exceeded"
Causa
Por padrão, alguns nós existentes em um cluster são configurados com regras do auditd que monitoram operações do Docker. Quando esses nós usam o runtime de contêiner Docker, as regras fazem com que o sistema registre logs de auditoria para atividades relacionadas ao Docker. Sob certas condições, como reinicializações frequentes de contêineres, aplicações gravando um grande volume de arquivos em um curto período ou bugs no kernel, o sistema pode gerar um número excessivo de logs de auditoria. Isso pode ocasionalmente causar alto I/O de disco pelo processo auditd ou um erro audit: backlog limit exceeded no log do sistema.
Sintomas
Esse problema afeta apenas nós que usam o runtime de contêiner Docker. Um nó afetado pode apresentar os seguintes sintomas:
Ao executar o comando iotop -o -d 1, a saída mostra que o valor
DISK WRITEpara o processo auditd permanece consistentemente em 1 MB/s ou mais.Ao executar o comando dmesg -d, a saída contém logs com a palavra-chave
audit_printk_skb, comoaudit_printk_skb: 100 callbacks suppressed.Ao executar o comando dmesg -d, a saída contém a palavra-chave
audit: backlog limit exceeded.
Solução
Siga estas etapas para verificar se a configuração do auditd é a causa:
Faça login em um nó do cluster.
-
Execute o comando a seguir para verificar as regras de auditoria.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fiSe a saída contiver a linha a seguir, a configuração do auditd é a causa.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi
Se a verificação confirmar que esse problema afeta os nós do seu cluster, escolha uma das soluções a seguir.
-
Atualizar o cluster
Atualize seu cluster para corrigir esse problema. Para obter mais informações, consulte {{XREF_108}}.
-
Usar o runtime de contêiner containerd
Para clusters que você não pode atualizar, é possível contornar esse problema alterando o runtime de contêiner do nó de Docker para containerd. Execute as etapas a seguir para cada pool de nós que usa o runtime de contêiner Docker:
Crie um novo pool de nós que use containerd clonando o pool de nós existente. A configuração do novo pool de nós deve ser idêntica à original, exceto pelo runtime de contêiner.
Durante horários de baixa demanda, drene os nós do pool de nós original um por um.
-
Atualizar a configuração do auditd nos nós
Se você não puder atualizar o cluster ou mudar para containerd, contorne o problema atualizando manualmente a configuração do auditd em cada nó afetado.
Faça login no nó afetado.
-
Execute os comandos a seguir para excluir as regras de auditoria relacionadas ao Docker.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi -
Execute o comando a seguir para aplicar as novas regras de auditoria.
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi