Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Troubleshooting node exceptions

Última atualização: Oct 15, 2026

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

  • {{XREF_1}}

  • {{XREF_2}}

  • {{XREF_3}}

  • {{XREF_4}}

  • {{XREF_5}}

  • {{XREF_6}}

  • {{XREF_7}}

  • {{XREF_8}}

Problemas comuns e soluções

  • Solucionar exceções de componentes principais

    • {{XREF_9}}

    • {{XREF_10}}

    • {{XREF_11}}

    • {{XREF_12}}

    • {{XREF_13}}

  • Solucionar exceções de recursos do nó

    • {{XREF_14}}

    • {{XREF_15}}

    • {{XREF_16}}

    • {{XREF_17}}

    • {{XREF_18}}

    • {{XREF_19}}

    • {{XREF_20}}

  • Solucionar exceções de rede do nó

    {{XREF_21}}

  • Solucionar outras exceções do nó

    • {{XREF_22}}

    • {{XREF_23}}

Procedimento de diagnóstico

image
  1. 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:

      1. 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}}.

      2. Verifique os componentes principais e os logs do nó.

        • Kubelet

          1. Verifique o status, os logs e a configuração do kubelet em busca de anomalias. Para obter mais informações, consulte {{XREF_28}}.

          2. Se o kubelet estiver anormal, consulte {{XREF_29}}.

        • Dockerd

          1. Verifique o status, os logs e a configuração do dockerd em busca de anomalias. Para obter mais informações, consulte {{XREF_30}}.

          2. Se o dockerd estiver anormal, consulte {{XREF_31}}.

        • Containerd

          1. Verifique o status, os logs e a configuração do containerd em busca de anomalias. Para obter mais informações, consulte {{XREF_32}}.

          2. Se o containerd estiver anormal, consulte {{XREF_33}}.

        • NTP

          1. 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}}.

          2. Se o serviço NTP estiver anormal, consulte {{XREF_35}}.

      3. Colete e verifique os logs de diagnóstico do nó. Para obter mais informações, consulte {{XREF_36}}.

      4. 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:

      1. Verifique se a instância ECS subjacente está no estado Running.

      2. Verifique os componentes principais do nó.

        • Kubelet

          1. Verifique o status, os logs e a configuração do kubelet em busca de anomalias. Para obter mais informações, consulte {{XREF_40}}.

          2. Se o kubelet estiver anormal, consulte {{XREF_41}}.

        • Dockerd

          1. Verifique o status, os logs e a configuração do dockerd em busca de anomalias. Para obter mais informações, consulte {{XREF_42}}.

          2. Se o dockerd estiver anormal, consulte {{XREF_43}}.

        • Containerd

          1. Verifique o status, os logs e a configuração do containerd em busca de anomalias. Para obter mais informações, consulte {{XREF_44}}.

          2. Se o containerd estiver anormal, consulte {{XREF_45}}.

        • NTP

          1. 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}}.

          2. Se o serviço NTP estiver anormal, consulte {{XREF_47}}.

      3. 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.

      4. Colete e verifique os logs de diagnóstico do nó. Para obter mais informações, consulte {{XREF_50}}.

      5. 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.

  2. 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.

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Node Pools > Nodes.

  3. Na página Nodes, localize o nó de destino e escolha More > Exception Diagnosis na coluna Actions.

  4. 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ó

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Node Pools > Nodes.

  3. 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ó

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Node Pools > Nodes.

  3. 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.

      Nota

      Para coletar informações sobre condições como InodesPressure, DockerOffline e RuntimeOffline, 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ó

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Node Pools > Nodes.

  3. 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
      fi

      Saí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
        fi

        Saí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
        fi

        Saí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
      fi

      Saí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

    1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

    2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Operations > Prometheus Monitoring.

    3. Na página Prometheus Monitoring, clique na aba Node Monitoring e, em seguida, clique na aba Nodes.

    4. 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

  1. 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
  2. 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
  3. 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
    fi
    • Se 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 ps e docker exec podem 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

  1. 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
  2. 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
  3. 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

  1. 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
  2. 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
  3. 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

  1. 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
  2. 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
  3. 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

  1. Reinicie os componentes principais do nó dockerd/containerd e kubelet em sequência e verifique se o nó se recuperou.

  2. Se reiniciar os componentes principais não resolver o problema, reinicie o nó. Consulte {{XREF_68}} para obter instruções.

    Aviso

    Reiniciar o nó pode interromper suas cargas de trabalho. Prossiga com cautela.

  3. 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}}.

    Aviso

    Reiniciar 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}}.

    Aviso

    Cuidado: 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

  1. 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
  2. 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
    fi

    Saí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
  3. 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.

  4. Reduza a carga no nó. Para obter mais informações, consulte {{XREF_89}}.

  5. Se necessário, reinicie o nó afetado. Para obter mais informações, consulte {{XREF_90}}.

    Aviso

    Reiniciar 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-storage nas 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

  1. 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
    fi

    Saí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
  2. 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}}.

  3. 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 WRITE para 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, como audit_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:

  1. Faça login em um nó do cluster.

  2. 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
    fi

    Se 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:

    1. 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.

    2. 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.

    1. Faça login no nó afetado.

    2. 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
    3. 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