Monitorar desdobramentos de carga de trabalho

Este artigo faz parte de uma série. Comece com a visão geral.

É importante monitorar a integridade e o desempenho de suas cargas de trabalho do Kubernetes para garantir que elas sejam executadas de forma otimizada. O Serviço Kubernetes do Azure (AKS) tem várias ferramentas que você pode usar para verificar a integridade e o desempenho de suas implantações, DaemonSet recursos e serviços.

Ferramentas

É importante determinar se todas as implementações e DaemonSet recursos estão em execução. Este artigo descreve como determinar se as réplicas nos estados pronto e disponível correspondem à contagem de réplicas esperada usando:

  • O portal Azure.
  • O recurso de insights de contêiner do Azure Monitor.
  • A ferramenta de linha de comando kubectl.
  • Prometeu e Grafana.

O portal do Azure

Você pode usar o portal do Azure para verificar a integridade dos seguintes componentes em suas cargas de trabalho. Para obter mais informações, consulte Acessar recursos do Kubernetes do portal do Azure.

Implantação, ReplicaSet, StatefulSete DaemonSet

Verifique se o número de réplicas que estão em um estado pronto corresponde ao número de réplicas desejadas. O portal mostra:

  • O número de réplicas que estão atualmente disponíveis e prontas para atender ao tráfego. Essas réplicas foram agendadas com êxito em nós de trabalho, concluíram seu processo de inicialização e passaram por suas verificações de preparação.

  • O número desejado de réplicas especificado para a implantação ou o número de réplicas que a implantação pretende manter. O controlador de implantação do Kubernetes monitora constantemente o estado da implantação e garante que o número real de réplicas corresponda ao número desejado.

Serviços e entradas

Certifique-se de que o status é ok para todos os serviços e entradas.

Armazenamento

Certifique-se de que o status esteja vinculado a todas as declarações de volume persistente e volumes persistentes.

Informações de contêineres

O Container insights é um recurso do Monitor que fornece recursos de monitoramento para cargas de trabalho de contêiner implantadas no AKS ou gerenciadas pelo Kubernetes habilitado para Azure Arc. Esse recurso reúne informações de desempenho e integridade, como métricas de memória e processador de controladores, nós e contêineres. Ele também captura logs de contêiner para análise.

Importante

Embora o Container Insights possa ser usado para coleta de métricas, sugerimos utilizar o serviço gerenciado do Azure Monitor para Prometheus para melhorar a coleta de métricas e usar o Container Insights exclusivamente para coleta de logs.

Você pode usar o Container Insights para analisar os dados coletados e entender o desempenho e o comportamento dos componentes em seu cluster. Aqui estão algumas maneiras de usar o Container Insights:

  • Identifique gargalos de recursos analisando o uso de processadores e memória de contêineres em cada nó.
  • Examine o desempenho de grupos de contêineres e seus contêineres em instâncias de contêiner.
  • Visualize o desempenho geral de controladores ou pods identificando a localização dos contêineres dentro deles.
  • Analise o uso de recursos de cargas de trabalho no host que não estão relacionadas ao suporte aos processos padrão do pod.
  • Entenda como o cluster se comporta sob cargas médias e pesadas para determinar as necessidades de capacidade e a carga máxima.
  • Acesse logs e métricas de contêineres em tempo real para solucionar problemas em tempo real.
  • Configure alertas para serem notificados ou registre o uso de CPU e memória excedendo os limites e as alterações de estado de integridade no cluster.

No portal do Azure, o Container Insights fornece ferramentas para monitorar e analisar a integridade e o desempenho de um cluster AKS:

  • Cluster: fornece uma visão geral do cluster AKS, incluindo métricas como uso de CPU e memória, contagens de pods e nós e tráfego de rede.
  • Relatórios: fornece relatórios pré-criados para visualizar e analisar o desempenho do cluster, o uso de recursos, a integridade do pod e as perceções do contêiner.
  • Nós: fornece informações detalhadas sobre nós no cluster, incluindo uso de CPU e memória, E/S de disco e rede e condição e status do nó.
  • Controladores: Oferece visibilidade dos controladores Kubernetes no cluster AKS, mostrando o número de instâncias, o estado atual e o status das operações do controlador.
  • Contêineres: fornece informações sobre contêineres em execução no cluster AKS, incluindo uso de recursos, reinicializações e eventos de ciclo de vida.
  • Logs em tempo real: fornece uma transmissão ao vivo de eventos de log de contêineres em execução, permitindo a visualização em tempo real de logs de contêineres para monitoramento e solução de problemas de aplicativos.

Para obter mais informações, consulte os seguintes recursos:

Ferramenta de linha de comando

Para verificar o status de suas cargas de trabalho, você pode usar a ferramenta de linha de comando kubectl para se comunicar com o plano de controle de um cluster Kubernetes por meio da API do Kubernetes.

Cápsulas

Para listar os pods em execução em todos os namespaces, execute o seguinte comando:

kubectl get pod -A

Na saída do comando, a coluna READY fornece informações importantes sobre o estado de prontidão dos contêineres do pod.

O primeiro número indica o número de contentores que estão atualmente num estado pronto. Esses contêineres passaram pelas sondas de prontidão e estão preparados para lidar com o tráfego de entrada. O segundo número representa a contagem total de contêineres definidos dentro do pod, independentemente de seu estado de prontidão. Ele inclui contêineres que estão prontos e aqueles que ainda estão sendo inicializados ou enfrentando problemas.

Certifique-se de que o primeiro número (contentores prontos) corresponde ao segundo número (total de contentores) para o pod. Se forem diferentes, alguns contêineres podem não estar prontos ou pode haver problemas que os impeçam de atingir o estado pronto .

Implantação, StatefulSet, DaemonSete ReplicaSet

Execute o seguinte comando para recuperar as implantações em todos os namespaces:

kubectl get deploy -A

Na saída do comando kubectl get deploy, os números na coluna READY indicam o estado atual de prontidão das réplicas em uma implantação.

O primeiro número representa o número de réplicas que estão prontas e disponíveis para atender ao tráfego. Essas réplicas foram iniciadas com êxito e passaram por suas verificações de prontidão. O segundo número representa o número desejado de réplicas especificadas na configuração de implantação. É o número alvo de réplicas que a implantação pretende manter.

É importante garantir que o primeiro número corresponda ao segundo. Ele indica que o número desejado de réplicas está em execução e pronto. Qualquer discrepância entre os dois números pode indicar problemas de dimensionamento ou preparação que você deve resolver.

Execute o seguinte comando para recuperar os recursos StatefulSet em todos os namespaces:

kubectl get statefulset -A

Execute o seguinte comando para recuperar os recursos do DaemonSet em todos os namespaces:

kubectl get ds -A

Você pode executar o kubectl get ds comando para verificar se um DaemonSet está sendo executado conforme o esperado. Por exemplo, você pode executar o seguinte comando para verificar se o agente do container insights foi implantado com êxito:

kubectl get ds ama-logs --namespace=kube-system

Da mesma forma, se você configurar seu cluster AKS para coletar métricas do Prometheus no Monitor for managed Prometheus, poderá executar o seguinte comando para verificar se o está implantado DaemonSet corretamente nos pools de nós do Linux:

kubectl get ds ama-metrics-node --namespace=kube-system

Esta saída fornece informações sobre as DaemonSet funcionalidades no seu cluster. Examine a saída para garantir que o número de pods nos estados pronto, atual e desejado seja o mesmo. Se forem os mesmos, o número desejado de pods especificado na DaemonSet configuração é igual ao número de pods que estão atualmente em execução e prontos.

Recomendamos que você execute a mesma verificação para os recursos do ReplicaSet . Você pode usar o seguinte comando para recuperar os ReplicaSet recursos em todos os namespaces:

kubectl get rs -A

Certifique-se de que os números nessa saída sejam os mesmos para cada estado, para que o número pretendido de pods ou réplicas esteja sendo executado conforme o esperado. As discrepâncias podem indicar a necessidade de investigação adicional ou solução de problemas usando um dos comandos a seguir.

kubectl describe: Você pode usar o comando kubectl describe para obter informações detalhadas sobre os recursos do Kubernetes, como pods, deployments e serviços. Você pode obter uma visão geral abrangente do recurso especificado, incluindo seu estado atual, eventos, condições e metadados relacionados. As informações são recuperadas do servidor de API do Kubernetes. Este comando é útil para solucionar problemas e entender o status de um recurso.

Você pode executar kubectl describe pod <pod-name> para obter informações detalhadas sobre um pod específico, incluindo seu estado atual, eventos, rótulos e os contêineres associados a ele. A saída mostra informações como status do pod, eventos, volumes e condições.

logs kubectl: Você pode usar o comando kubectl logs para recuperar logs gerados por um contêiner dentro de um pod. Este comando é útil para depuração e diagnóstico de problemas. Você pode visualizar os logs em tempo real ou recuperar logs históricos de um contêiner.

Para exibir logs de contêiner, você pode usar o comando kubectl logs <pod-name> -c <container-name>. Substitua <pod-name> pelo nome do pod. Substitua <container-name> pelo nome do contêiner do qual você deseja buscar os logs. Se houver apenas um contêiner no pod, não será necessário especificar o nome do contêiner. Você também pode usar a -f flag com kubectl logs para acompanhar os logs em tempo real. Este sinalizador é semelhante ao tail -f comando Linux.

Eventos Kubectl: Você pode usar o comando kubectl events para solucionar problemas quando uma implantação, DaemonSet, ReplicaSet, ou pod não inicia ou encontra um problema durante a inicialização. Este comando fornece uma lista cronológica de eventos associados ao recurso especificado. Você pode obter informações sobre o que pode ter causado o problema.

Para usar kubectl events, pode executar o comando kubectl events seguido por um nome de recurso específico. Ou você pode usar seletores para filtrar eventos com base em rótulos, namespaces ou outros critérios.

Por exemplo, para recuperar eventos relacionados a um pod específico, você pode executar kubectl events --field-selector involvedObject.name=<pod-name> --field-selector involvedObject.kind=Pod. Substitua <pod-name> pelo nome do pod que você deseja investigar. A saída do comando kubectl events apresenta informações, como o tipo de evento (normal ou aviso), a mensagem do evento, o motivo do evento e o carimbo de data/hora em que o evento ocorreu. Você pode usar essas informações para ajudar a determinar o que causou a falha ou o problema durante a inicialização.

Se você suspeitar que um recurso específico, como uma implantação, DaemonSetou ReplicaSet está enfrentando problemas, poderá filtrar eventos usando seletores. Por exemplo, kubectl events --field-selector involvedObject.name=<deployment-name> --field-selector involvedObject.kind=Deployment mostra eventos relacionados a uma implantação específica. Examine eventos para que você possa reunir detalhes importantes sobre possíveis erros, falhas ou outros eventos que possam ter impedido o recurso de iniciar corretamente. Use esses dados para ajudar a solucionar e resolver problemas que afetam o recurso.

Monitorização em cluster com Prometheus e Grafana

Se você implantar o Prometheus e o Grafana em seu cluster AKS, poderá usar o Painel de Detalhes do Cluster K8 para obter informações. Este painel apresenta informações coletadas das métricas de cluster do Prometheus, como uso de CPU e memória, atividade de rede e uso do sistema de arquivos. Mostra também estatísticas detalhadas para pods individuais, contentores e serviços systemd.

Para garantir a integridade e o desempenho de suas implantações, trabalhos, pods e contêineres, você pode usar os recursos no painel. Selecione Implantações para exibir o número de réplicas de cada implantação e o número total de réplicas. Selecione Contêineres para exibir um gráfico que mostra os contêineres em execução, pendentes, com falha e bem-sucedidos.

Monitore o serviço de gestão para Prometheus e Azure Managed Grafana

Você pode usar painéis pré-criados para visualizar e analisar as métricas do Prometheus. Para fazer isso, você deve configurar seu cluster AKS para coletar métricas do Prometheus no serviço gerenciado do Monitor para Prometheus e conectar seu espaço de trabalho do Monitor a um espaço de trabalho do Azure Managed Grafana .

Instale os painéis pré-construídos para obter uma visão abrangente do desempenho e da integridade do cluster Kubernetes. Para obter instruções detalhadas de instalação, consulte Prometheus monitoring mixin for Kubernetes. Os painéis são provisionados na instância especificada do Azure Managed Grafana na pasta Managed Prometheus . Alguns painéis incluem:

  • Kubernetes / Recursos de computação / Cluster
  • Kubernetes / Recursos de computação / Namespace (Pods)
  • Kubernetes / Recursos de Computação / Nó (Pods)
  • Kubernetes / Recursos de computação / Pod
  • Kubernetes / Recursos de computação / Namespace (cargas de trabalho)
  • Kubernetes / Recursos de computação / Carga de trabalho
  • Kubernetes / Kubelet
  • Node Exporter / Método USE / Nó
  • Node Exporter / Nós
  • Kubernetes / Recursos de computação / Cluster (Windows)
  • Kubernetes / Recursos de computação / Namespace (Windows)
  • Kubernetes / Recursos de computação / Pod (Windows)
  • Kubernetes / Método USE / Cluster (Windows)
  • Kubernetes / Método USE / Nó (Windows)

Esses painéis integrados são amplamente utilizados na comunidade de código aberto para monitorar clusters Kubernetes com Prometheus e Grafana. Use esses painéis para ver métricas, como uso de recursos, integridade do pod e atividade de rede. Você também pode criar painéis personalizados que são adaptados às suas necessidades de monitoramento. Os painéis ajudam você a monitorar e analisar efetivamente as métricas do Prometheus em seu cluster AKS, o que permite otimizar o desempenho, solucionar problemas e garantir o bom funcionamento de suas cargas de trabalho do Kubernetes.

Você pode usar o painel Kubernetes / Recursos de computação / Nó (Pods) para ver as métricas dos nós do agente Linux. Você pode visualizar o uso da CPU, a cota da CPU, o uso da memória e a cota de memória para cada pod.

O painel Kubernetes / Compute Resources / Pod Grafana fornece informações sobre o consumo de recursos e as métricas de desempenho de um cluster, namespace e pod selecionados. Você pode usar esse painel para obter métricas relacionadas ao uso da CPU, limitação da CPU, cota da CPU, uso da memória, cota de memória, métricas de rede e métricas de armazenamento. No painel, selecione um cluster AKS, namespace e pod dentro do namespace escolhido para ver os seguintes detalhes:

  • Uso da CPU: Este gráfico exibe o uso da CPU ao longo do tempo para o pod selecionado. Você pode revisar o padrão de consumo da CPU e identificar possíveis picos ou anormalidades.

  • Limitação da CPU: este gráfico fornece informações sobre a limitação da CPU, que ocorre quando um pod excede seus limites de recursos da CPU. Monitore essa métrica para ajudar a identificar áreas onde o desempenho do pod é restrito devido à limitação da CPU.

  • Cota de CPU: este gráfico mostra a cota de CPU alocada para o pod selecionado. Se o pod exceder a sua cota atribuída de CPU, pode necessitar de ajustes de recursos.

  • Uso de memória: Este gráfico apresenta o uso de memória do pod selecionado. Monitore o padrão de consumo de memória e identifique quaisquer problemas relacionados à memória.

  • Cota de memória: este gráfico exibe a cota de memória alocada para o pod. Se o pod exceder sua cota de memória atribuída, isso pode indicar uma necessidade de otimização de recursos.

  • Métricas de rede: esses gráficos mostram a largura de banda recebida e transmitida e a taxa de pacotes recebidos e transmitidos. Essas métricas ajudam a monitorar o uso da rede e detetar possíveis gargalos ou anomalias de rede.

  • Métricas de armazenamento: esta seção fornece informações sobre métricas relacionadas ao armazenamento, como IOPS (operações de E/S por segundo) e taxa de transferência. Monitore essas métricas para avaliar o desempenho e a eficiência do armazenamento dos pods.

Você pode usar o painel Kubernetes / Compute Resources / Pod Grafana para obter informações sobre o uso de recursos, desempenho e comportamento de pods em seu cluster Kubernetes. Use essas informações para otimizar a alocação de recursos, solucionar problemas de desempenho e tomar decisões informadas para garantir o bom funcionamento de suas cargas de trabalho em contêineres.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Autor principal:

Outros contribuidores:

Para ver perfis não públicos do LinkedIn, faça login no LinkedIn.

Próximos passos