Compartilhar via


Solucionar problemas Serviço de Kubernetes do Azure clusters ou nós em um estado com falha

Este artigo discute como solucionar problemas de um cluster ou nó AKS (Microsoft Serviço de Kubernetes do Azure) que insira um estado com falha.

Causas comuns

Aqui estão as causas comuns de um cluster ou pool de nós com falha:

Motivo Referência
Erro de provisionamento de extensão CSE (Extensão de Script Personalizado) Solucionar problemas de falhas não prontas causadas por erros do CSE
Principais recursos do Azure indisponíveis
Falha de alocação de VM devido a nenhuma capacidade zonal/regional
Falha na alocação de VM devido à cota principal excedida Erro de cotaexceeded
Restrições impostas pelo cliente
Problemas de carga de trabalho

Solução de problemas básica de erros comuns que fazem com que um cluster/nó falhe

A tabela a seguir descreve alguns erros comuns que podem fazer com que um cluster ou nó insira um estado com falha, suas descrições e métodos básicos de solução de problemas para resolve esses erros.

Erro Descrição Método de solução de problemas
OutboundConnFailVMExtensionError Esse erro indica que a extensão da VM não é instalada ou atualizada devido à falta de conectividade de saída. Verifique as regras de NSG (grupo de segurança de rede) e as configurações de firewall do conjunto de dimensionamento de VM ou VM. Verifique se o conjunto de dimensionamento de VM ou VM pode acessar esses pontos de extremidade: https://aka.ms/aks/outbound, https://aka.ms/aks/ssh, https://aka.ms/aks/agente https://aka.ms/aks/containerinsights.
Erro de drenagem Esse erro indica que o nó falha ao drenar antes da operação de atualização. Verifique o pod status e eventos no nó usando os comandos kubectl: kubectl get pods --all-namespaces -o wide e kubectl describe pod <pod-name> -n <namespace>. Procure por pods presos em um estado encerrado ou desconhecido ou com quaisquer erros ou avisos nos eventos. Talvez seja necessário forçar a exclusão dos pods ou reiniciar o serviço kubelet no nó.
Erro SubscriptionNotRegistered Esse erro indica que a assinatura não está registrada para usar o provedor de recursos do AKS. Registre a assinatura usando o az provider register --namespace Microsoft.ContainerService comando.
Erro RequestDisallowedByPolicy Esse erro indica que a operação é bloqueada por uma política aplicada à assinatura ou grupo de recursos. Examine os detalhes da política e os escopos de atribuição de política. Para permitir a operação, talvez seja necessário modificar ou excluir a política.
Erro QuotaExceeded Esse erro indica que a operação excede o limite de cota para um tipo de recurso ou uma região. Verifique o uso da cota atual e o limite de cota para o tipo de recurso ou região usando o portal do Azure, a CLI do Azure ou Azure PowerShell. Talvez seja necessário excluir alguns recursos não utilizados ou solicitar um aumento de cota.
Erro PublicIPCountLimitReached Esse erro indica que a operação atinge o número máximo de endereços IP públicos que podem ser criados em uma assinatura ou região. Verifique o uso e o limite de endereço IP público atual para a assinatura ou região usando o portal do Azure, a CLI do Azure ou Azure PowerShell. Talvez seja necessário excluir alguns endereços IP públicos não utilizados ou solicitar um aumento no limite de endereço IP público.
Erro overconstrainedAllocationRequest Esse erro indica que a operação falha ao alocar o tamanho da VM solicitada em uma região. Verifique a disponibilidade do tamanho da VM na região usando o portal do Azure, a CLI do Azure ou Azure PowerShell. Talvez seja necessário escolher um tamanho de VM diferente ou uma região diferente.
Erro ReadOnlyDisabledSubscription Esse erro indica que a assinatura está desabilitada no momento e definida como somente leitura. Examine e ajuste as permissões de assinatura, pois a assinatura pode ter sido suspensa devido a problemas de cobrança, crédito expirado ou violações de política.

Solução de problemas básica de outros possíveis problemas que causam falha em um cluster/nó

Esta tabela descreve outros problemas possíveis que podem fazer com que um cluster ou nó insira um estado com falha, suas descrições e soluções para corrigir esses problemas.

Problema Descrição Solução
O tamanho da sub-rede é muito pequeno A operação não pode criar ou atualizar o cluster porque a sub-rede não tem espaço suficiente para acomodar o número necessário de nós. Exclua o pool de nós e crie um novo com um tamanho de sub-rede maior usando o portal do Azure, a CLI do Azure ou Azure PowerShell.
A rede virtual está bloqueada A operação não pode ser comunificada com o servidor de API de cluster ou o plano de controle kubernetes porque o firewall ou uma configuração DNS (Sistema de Nomes de Domínio) personalizado bloqueia as conexões de saída dos nós. Permitir o tráfego do nó no firewall e configurar a resolução DNS para o Azure usando o portal do Azure, a CLI do Azure ou Azure PowerShell.
Problemas do PDB A operação não pode atualizar o cluster porque um PDB interrompeu a remoção de um ou mais pods. Um PDB é um recurso que limita quantos pods podem ser encerrados voluntariamente durante um período específico. Remova temporariamente o PDB, reconcilie o cluster e adicione o PDB novamente usando a ferramenta de linha de comando kubectl.
Problemas de infraestrutura A operação não pode atualizar o cluster devido a um problema interno com o serviço ARM (Azure Resource Manager) que gerencia recursos no Azure. Faça uma reconciliação de pool de agentes para cada pool de nós e uma reconciliação para o cluster gerenciado usando a CLI do Azure ou Azure PowerShell.
Erros do servidor de API A operação não pode alcançar o servidor de API de cluster ou o plano de controle kubernetes devido a uma interrupção ou um bug. Denuncie-o à equipe de suporte do AKS e forneça os logs relevantes e as informações de diagnóstico. Você pode obter os logs e as informações de diagnóstico usando o portal do Azure, a CLI do Azure ou Azure PowerShell.

Observação

  • A operação mencionada na tabela anterior refere-se a qualquer operação de atualização (PUT) disparada do lado do cliente.
  • No Kubernetes, há um componente dentro de um controlador. Ele garante o estado real do mundo, incluindo o estado do cluster e estados potencialmente externos, como executar contêineres para Kubelet ou balanceadores de carga para um provedor de nuvem. Ele se alinha com o estado desejado especificado em um objeto. Esse processo de alinhamento é uma função chave do controlador. Para AKS, esse componente garante que o estado do cluster AKS esteja alinhado com a configuração desejada. Para acioná-lo manualmente, execute az resource update --ids <AKS cluster id>. Você pode obter a ID do cluster do AKS executando az aks show -n <cluster name> -g <cluster resource group> -o json --query id. Se houver diferenças entre os estados reais e desejados, tome as ações necessárias para corrigir essas discrepâncias.

Verificação de estado de provisionamento

Para marcar o status de cluster, selecione Verificação de estado de provisionamento. Em seguida, o estado de provisionamento do cluster e do pool de agentes é mostrado.

Captura de tela que mostra a opção

Cenário 1: o cluster está em um estado com falha

Para resolve esse problema, obtenha a operação que causa a falha e descubra o erro. Aqui estão duas falhas de operação comuns que podem resultar em um cluster com falha:

  • Falha na criação do cluster
  • Falha na atualização do cluster

Se um cluster criado ou atualizado recentemente estiver em um estado com falha, use os seguintes métodos para solucionar problemas da falha:

Exibir o log de atividades de um cluster com falha usando o portal do Azure

Para exibir os logs de atividade de um cluster com falha no portal do Azure, siga estas etapas:

  1. No portal do Azure, acesse a página Grupos de recursos e selecione o grupo de recursos que contém seu cluster.

  2. Na página Visão geral , selecione o nome do cluster na lista de recursos.

  3. Na página do cluster, selecione Log de atividades no menu à esquerda.

  4. Na página Log de atividades , você pode filtrar eventos por Status, Timespan, Evento iniciado por e categoria Evento. Por exemplo, você pode selecionar Falha na lista suspensa Status para ver apenas eventos com falha.

    Captura de tela que mostra como filtrar eventos na página 'Log de atividades'.

  5. Para marcar os detalhes de um evento, selecione o nome do evento na lista. Um novo painel é aberto com os dados resumo, propriedades e JSON do evento. Você também pode baixar os dados JSON como um arquivo.

  6. Para marcar o código de erro e a mensagem associados ao evento, role para baixo até a seção Status no resumo do evento. Você também pode encontrar as informações de erro nas propriedades e nas seções de dados JSON.

Exibir o log de atividades de um cluster com falha usando a CLI do Azure

Se preferir usar a CLI do Azure para exibir o log de atividades de um cluster com falha, siga estas etapas:

  1. Instale a CLI do Azure no computador e faça logon com sua conta do Azure.

  2. Liste os grupos de recursos em sua assinatura usando o az group list comando e localize o nome do grupo de recursos que contém seu cluster.

  3. Liste os recursos no grupo de recursos usando o az resource list comando com o --resource-group parâmetro e localize o nome do cluster.

  4. Liste o log de atividades do cluster usando o az monitor activity-log list comando com os --resource-group parâmetros e --resource . Você também pode usar os --statusparâmetros , --start-time, --end-time, e --caller--filter para filtrar eventos por critérios diferentes. Por exemplo, você pode usar --status Failed para ver apenas eventos com falha.

  5. Mostre os detalhes de um evento específico usando o az monitor activity-log show comando com os --resource-groupparâmetros , --resourcee --event-id . Você pode encontrar a ID do evento na saída do comando anterior. A saída incluirá o resumo do evento, as propriedades e os dados JSON. Você também pode usar o --output parâmetro para alterar o formato de saída.

  6. Para ver o código de erro e a mensagem associados ao evento, procure o statusMessage campo na saída de comando. Você também pode encontrar as informações de erro nas propriedades e nas seções de dados JSON.

    Captura de tela que mostra dados JSON.

Usar o recurso diagnóstico e solução de problemas do AKS para um cluster com falha

No portal do Azure, navegue até o recurso de cluster do AKS e selecione Diagnosticar e resolver problemas no menu esquerdo. Você verá uma lista de categorias e cenários que você pode selecionar para executar verificações de diagnóstico e obter soluções recomendadas.

Na CLI do Azure, use o az aks collect comando com os --name parâmetros e --resource-group para coletar dados de diagnóstico de seus nós de cluster. Você também pode usar os --storage-account parâmetros e --sas-token para especificar uma conta de Armazenamento do Azure em que os dados serão carregados. A saída incluirá um link para a folha Diagnosticar e Resolver Problemas em que você pode exibir os resultados e as ações sugeridas.

Na folha Diagnosticar e Resolver Problemas , você pode selecionar Problemas de Cluster como a categoria. Se algum problema for detectado, você verá uma lista de possíveis soluções que você pode seguir para corrigi-los.

Captura de tela que mostra possíveis soluções no portal 'Diagnosticar e Resolver Problemas'.

Cenário 2: o nó está em um estado com falha

Em casos raros, uma operação de desanexação do Disco do Azure pode falhar parcialmente, o que deixa a VM do nó em um estado com falha.

Para resolve esse problema, atualize manualmente a VM status usando um dos seguintes métodos:

  • Para um cluster baseado em um conjunto de disponibilidade, execute o seguinte comando az vm update :

    az vm update --resource-group <resource-group-name> --name <vm-name>
    
  • Para um cluster baseado em um conjunto de dimensionamento de VM, execute o seguinte comando az vmss update-instances :

    az vmss update-instances --resource-group <resource-group-name> --name <scale-set-name> --instance-id <vm-or-scale-set-id>
    

Cenário 3: o pool de nós está em um estado com falha

Esse problema pode acontecer quando o conjunto de escala de VM ou o conjunto de disponibilidade que faz backup do pool de nós encontrar um erro durante o provisionamento, o dimensionamento ou a atualização. Esse problema pode ser devido à capacidade insuficiente, limites de cota, problemas de rede, violações de política, bloqueios de recursos ou outros fatores que impedem que a VM seja alocada ou configurada corretamente.

Para resolver esse problema, siga estas etapas:

  1. Verifique o status do pool de nós usando o az aks nodepool show comando. Se o estado de provisionamento for Failed, você poderá ver a mensagem de erro e o código na saída.
  2. Verifique o status do conjunto de dimensionamento de VM ou do conjunto de disponibilidade usando o az vmss show comando ouaz vm availability-set show. Se o estado de provisionamento for Failed, você poderá ver a mensagem de erro e o código na saída.
  3. Verifique o status da VM individual no pool de nós usando o az vmss list-instances comando ouaz vm list . Se alguma VM estiver em um Failed estado ou Unhealthy , você poderá ver a mensagem de erro e o código na saída.
  4. Verifique o log de atividades e a configuração de diagnóstico do conjunto de dimensionamento ou disponibilidade da VM definido para ver se há eventos ou alertas que indiquem a causa da falha. Você pode usar o portal do Azure, a CLI do Azure ou a API do Azure Monitor para acessar o log de atividades e a configuração de diagnóstico.
  5. Verifique a cota e a capacidade da região e da assinatura em que o pool de nós está implantado. Você pode usar o az vm list-usage comando ou o portal do Azure para marcar a cota e a capacidade. Se o limite de cota ou capacidade for atingido, você poderá solicitar um aumento ou excluir alguns recursos não utilizados.
  6. Verifique as atribuições de política e função do pool de nós. Você pode usar os az policy comandos e az role ou o portal do Azure para marcar as definições de política, atribuições, conformidade e isenções. Você também pode marcar as atribuições e permissões de função do pool de nós usando o az role assignment comando ou o portal do Azure.
  7. Verifique os bloqueios de recursos do pool de nós. Você pode usar o az lock comando ou o portal do Azure para marcar o nível de bloqueio, o escopo e as anotações. Você também pode excluir ou atualizar o bloqueio, se necessário.

Outras ferramentas de log e diagnóstico

Se os métodos de solução de problemas anteriores não resolve seu problema, você poderá usar as seguintes ferramentas de log e diagnóstico para coletar mais informações e identificar a causa raiz:

  • Azure Monitor para contêineres:

    Esse serviço coleta e analisa métricas e logs de clusters do AKS e dos nós. O Azure Monitor para contêineres pode monitorar a integridade, o desempenho e a disponibilidade do cluster e do nó. Você também pode usá-lo para exibir logs de contêiner, logs de kubelet e logs de diagnóstico de inicialização de nó.

  • Periscópio AKS

    Essa ferramenta coleta logs de nó e pod, informações de rede e configuração de cluster de um cluster do AKS e os carrega em uma conta de armazenamento do Azure. Essa ferramenta pode ajudá-lo a solucionar problemas comuns de cluster, como resolução DNS, conectividade de rede e nó status. Você também pode usá-la para gerar uma solicitação de suporte com os logs coletados anexados.

  • Diagnóstico do AKS

    Essa ferramenta executa uma série de verificações em clusters do AKS e nos nós e fornece recomendações e etapas de correção para problemas comuns. Essa ferramenta pode ajudá-lo a solucionar problemas relacionados à criação, atualização, dimensionamento, rede, armazenamento e segurança do cluster. Você também pode usá-la para gerar uma solicitação de suporte com os resultados de diagnóstico anexados.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.