Monitorar implantações 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 implantaçõ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:
- Portal do 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
StatefulSet
eDaemonSet
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 contentores
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.
Você pode usar vários modos de exibição e pastas de trabalho pré-criadas para analisar os dados coletados. Examine o desempenho e o comportamento de vários componentes dentro do cluster. Com insights de contêiner, você pode obter informações sobre o estado geral de suas cargas de trabalho de contêiner para que possa tomar decisões informadas para otimizar seu desempenho e solucionar problemas.
Você pode usar informações de contêiner para:
Identifique gargalos de recursos identificando contêineres que são executados em cada nó e seu processador e uso de memória.
Identifique o processador e o uso de memória de grupos de contêineres e seus contêineres hospedados em instâncias de contêiner.
Visualize o desempenho geral do controlador ou pod identificando onde o contêiner reside em um controlador ou pod.
Analise o uso de recursos de cargas de trabalho que são executadas no host e não estão relacionadas aos processos padrão que suportam o pod.
Compreenda o comportamento de um cluster sob cargas médias e pesadas para que você possa identificar as necessidades de capacidade e determinar a carga máxima que o cluster pode suportar.
Acesse logs de contêiner em tempo real e métricas que o mecanismo de contêiner gera para que você possa solucionar problemas em tempo real.
Configure alertas para notificá-lo proativamente ou registrar quando o uso de CPU e memória em nós ou contêineres exceder seus limites, ou quando ocorrer uma alteração de estado de integridade no cluster no rollup de integridade da infraestrutura ou dos nós.
No portal do Azure, o container insights fornece várias ferramentas para ajudar a monitorar e analisar a integridade e o desempenho de um cluster AKS.
Cluster: Este recurso fornece uma visão geral do seu cluster AKS, incluindo métricas-chave como uso de CPU e memória, contagens de pods e nós e tráfego de rede. Você pode obter informações sobre a integridade geral e o uso de recursos do cluster.
Relatórios: esse recurso fornece relatórios pré-criados que você pode usar para visualizar e analisar vários aspetos do desempenho do cluster, como uso de recursos, integridade do pod e insights de contêiner. Esses dados ajudam você a entender o comportamento e o desempenho de seus contêineres e cargas de trabalho.
Nós: esse recurso fornece informações detalhadas sobre os nós em seu cluster. Ele mostra as métricas de uso de CPU e memória, E/S de disco e rede e a condição e o status de cada nó. Você pode usar esses dados para monitorar o desempenho de nós individuais, identificar possíveis gargalos e garantir uma alocação eficiente de recursos.
Controladores: Este recurso fornece visibilidade dos controladores Kubernetes em seu cluster AKS. Ele mostra informações como o número de instâncias do controlador, o estado atual e o status das operações do controlador. Você pode monitorar a integridade e o desempenho de controladores que gerenciam implantações de carga de trabalho, serviços e outros recursos.
Contêineres: esse recurso fornece informações sobre contêineres que são executados em seu cluster AKS. Ele fornece informações relacionadas ao uso de recursos, reinicializações e eventos do ciclo de vida de cada contêiner. Você pode usar esses dados para ajudar a monitorar e solucionar problemas de contêineres em suas cargas de trabalho.
Logs dinâmicos: o recurso de logs ao vivo fornece uma transmissão ao vivo de eventos de log de contêineres em execução, para que você possa visualizar logs de contêiner em tempo real. Você pode usar esses dados para monitorar e solucionar problemas de aplicativos de forma eficaz e identificar e resolver rapidamente problemas em seus contêineres.
Para obter mais informações, consulte os seguintes recursos:
- Monitore o desempenho do cluster Kubernetes com informações de contêiner
- Configure o monitoramento de GPU com informações de contêiner
- Monitorar e visualizar configurações de rede com o gerenciador de políticas de rede do Azure
- Monitore implantações e métricas de HPA com insights de contêiner
- Monitorar métricas de volume persistente (PV)
- Monitore a segurança com o Syslog
- Relatórios em insights de contêiner
- Métricas coletadas por insights de contêiner
- Visualize logs, eventos e métricas de pod do Kubernetes em tempo real
- Visualize métricas de cluster em tempo real
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.
Pods
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 significa a contagem de contêineres que estão atualmente em um 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
DaemonSet
eStatefulSet
Execute o seguinte comando para recuperar as implantações em todos os namespaces:
kubectl get deploy -A
Na saída do kubectl get deploy
comando, os números na coluna READY indicam o estado de prontidão atual 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 comando para verificar se um DaemonSet
está sendo executado conforme o kubectl get ds
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
Essa saída fornece informações sobre os DaemonSet
recursos do 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 recursos em todos os ReplicaSet
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, implantações 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.
kubectl logs: 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 solução 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
bandeira com kubectl logs
para seguir 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, , , ReplicaSet
DaemonSet
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
o , você 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 exibe informações como o tipo de evento (normal ou aviso), a mensagem do evento, o motivo do evento e o carimbo de kubectl events
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, ou ReplicaSet
está enfrentando problemas, DaemonSet
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. Ele também mostra estatísticas detalhadas para pods individuais, contêineres 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 para 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.
Monitorar o serviço gerenciado 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
- Exportador de Nó / Método USE / Nó
- Exportador de nós / 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 sua cota de CPU atribuída, ele pode exigir 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 ajudar a avaliar o desempenho e a eficiência do armazenamento de 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:
- Paolo Salvatori - Brasil | Engenheiro de Clientes Principal
Outros contribuidores:
- Kevin Harris - Brasil | Especialista Principal de Soluções
- Francis Simy Nazareth - Brasil | Especialista Técnico Sénior
Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.