Solucionar problemas de alto uso da CPU em clusters do AKS
O alto uso da CPU é um sintoma de um ou mais aplicativos ou processos que exigem tanto tempo de CPU que o desempenho ou a usabilidade da máquina são afetados. O alto uso da CPU pode ocorrer de várias maneiras, mas é causado principalmente pela configuração do usuário.
Quando um nó em um cluster do AKS (Serviço de Kubernetes do Azure) experimenta alto uso da CPU, os aplicativos em execução nele podem sofrer degradação no desempenho e na confiabilidade. Os aplicativos ou os processos também se tornam instáveis, o que pode levar a problemas além de respostas lentas.
Este artigo ajuda você a identificar os nós e contêineres que consomem alta CPU e fornece práticas recomendadas para resolver o alto uso da CPU.
Sintomas
A tabela a seguir descreve os sintomas comuns de alto uso da CPU:
Sintoma | Descrição |
---|---|
Falta de CPU | Aplicativos com uso intensivo de CPU tornam outros aplicativos mais lentos no mesmo nó. |
Alterações de estado lentas | Os pods podem demorar mais para ficar prontos. |
Estado do nó NotReady | Um nó entra no estado NotReady . Esse problema ocorre porque o contêiner com alto uso da CPU faz com que a ferramenta de linha de comando Kubectl não responda. |
Lista de verificação de solução de problemas
Para resolver o alto uso da CPU, use ferramentas de monitoramento eficazes e aplique as práticas recomendadas.
Etapa 1: identificar nós/contêineres com alto uso da CPU
Use um dos seguintes métodos para identificar nós e contêineres com alto uso da CPU:
Em um navegador da Web, use o recurso Container Insights do AKS no portal do Azure.
Em um console, use a ferramenta de linha de comando do Kubernetes (kubectl).
O Container Insights é um recurso do AKS. Ele foi projetado para monitorar o desempenho de cargas de trabalho de contêiner. Você pode usar os insights de contêiner para identificar nós, contêineres ou pods que geram alto uso da CPU.
Para identificar nós, contêineres ou pods que geram alto uso da CPU, siga estas etapas:
Navegue até o cluster no portal do Azure.
Em Monitoramento, selecione Insights.
Defina o intervalo de tempo apropriado.
Localize os nós com alto uso da CPU e verifique se o uso da CPU do nó está estável.
Selecione Nós. Defina Métrica como Uso da CPU (milicores) e, em seguida, defina o exemplo como Máx. Use o recurso de classificação no Max para ordenar os nós por Max%. Os nós com o maior uso da CPU aparecem na parte superior.
Na captura de tela a seguir, o nó usa apenas 12% da CPU máxima e está em execução há 16 dias.
Depois de localizar os nós com alto uso da CPU, selecione os nós para encontrar pods neles e seu uso da CPU.
Observação
A porcentagem de uso de CPU ou memória para pods é baseada na solicitação de CPU especificada para o contêiner. Ele não representa a porcentagem do uso de CPU ou memória para o nó. Portanto, observe o uso real da CPU ou da memória em vez da porcentagem de uso da CPU ou da memória para pods.
Depois de obter a lista de pods com alto uso da CPU, você pode mapeá-la para os aplicativos que causam o pico no uso da CPU.
Etapa 2: Revise as práticas recomendadas para evitar o alto uso da CPU
Examine a tabela a seguir para saber como implementar as práticas recomendadas para evitar o alto uso da CPU:
Melhor prática | Descrição |
---|---|
Definir limites apropriados para contêineres | O Kubernetes permite especificar solicitações e limites nos recursos para contêineres. Solicitações e limites de recursos representam o número mínimo e máximo de recursos que um contêiner pode usar. Recomendamos que você defina solicitações e limites apropriados para escolher a classe de Qualidade de Serviço (QoS) do Kubernetes apropriada para cada pod. |
Habilitar O HPA (Dimensionador Automático de Pod Horizontal) | Definir limites apropriados, juntamente com a habilitação do HPA, pode ajudar a resolver o alto uso da CPU. |
Selecionar VMs de SKU mais altas | Para lidar com cargas de trabalho de CPU altas, use VMs de SKU mais altas. Para fazer isso, crie um pool de nós, isole os nós para torná-los não agendados e escorra o pool de nós existente. |
Isolar cargas de trabalho do sistema e do usuário | Recomendamos que você crie um pool de nós separado (diferente do pool de agentes) para executar suas cargas de trabalho. Isso pode impedir a sobrecarga do pool de nós do sistema e fornecer melhor desempenho. |
Referências
- Visão geral dos Insights do contêiner
- Monitorar o desempenho do cluster do Kubernetes com os Insights do contêiner
- Como gerenciar o agente de insights de contêiner
- Limites de recursos
- Cotas de recursos
- Intervalos de limite
- Qualidade de Serviço
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.