Monitore as implantações de carga de trabalho.
Este artigo faz parte de uma série. Comece com essa visão geral.
É importante monitorar a integridade e o desempenho de suas cargas de trabalho do Kubernetes para garantir que elas sejam executadas da melhor forma. O Serviço de Kubernetes do Azure (AKS) tem várias ferramentas que você pode usar para verificar a integridade e o desempenho de suas implantações, recursos DaemonSet
e serviços.
Ferramentas
É importante determinar se todas as implantações e recursos DaemonSet
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 do Azure.
- O recurso de insights de contêiner do Azure Monitor.
- A ferramenta de linha de comando kubectl.
- Prometheus 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 no portal do Azure.
Implantação, ReplicaSet
, StatefulSet
e 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 atualmente disponíveis e prontas para atender ao tráfego. Essas réplicas foram agendadas com êxito nos nós de trabalho, concluíram o processo de inicialização e passaram nas verificações de preparação.
O número desejado de réplicas especificadas para a implantação ou o número de réplicas que a implantação visa 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 seja OK para todos os serviços e ingressos.
Armazenamento
Certifique-se de que o status seja associado a todas as declarações de volume persistente e volumes persistentes.
Insights do contêiner
O Insights de contêiner é 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 predefinidas para analisar os dados coletados. Examine o desempenho e o comportamento de vários componentes em seu cluster. Com o insights de contêiner, você pode obter insights 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 os insights de contêiner para:
Identificar gargalos de recursos ao identificar contêineres executados em cada nó e a utilização do processador e da memória por parte desses contêineres.
Identifique o uso de processador e de memória de grupos de contêineres e seus contêineres hospedados em instâncias de contêiner.
Exiba o desempenho geral do controlador ou do pod identificando onde o contêiner reside em um controlador ou pod.
Examine o uso de recursos de cargas de trabalho em execução no host não relacionadas aos processos padrão que dão suporte ao pod.
Compreender 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.
Acessar 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.
Configurar alertas para notificar você de maneira proativa ou registrar quando o uso de CPU e memória em nós ou contêineres excederem os limites ou quando uma alteração de estado de integridade ocorrer no cluster no rollup de integridade da infraestrutura ou de nós.
No portal do Azure, os insights de contêiner fornecem várias ferramentas para ajudar a monitorar e analisar a integridade e o desempenho de um cluster do AKS.
Cluster: esse recurso fornece uma visão geral do cluster do AKS, incluindo métricas importantes, 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 predefinidos que você pode usar para visualizar e analisar vários aspectos do desempenho do cluster, como uso de recursos, integridade do pod e insights de contêiner. Esses dados ajudam 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 no 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 cada nó, identificar possíveis gargalos e garantir a alocação eficiente de recursos.
Controladores: esse 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 do 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 ao vivo: 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 exibir logs de contêiner em tempo real. Você pode usar esses dados para monitorar e solucionar problemas de aplicativos com eficiência e identificar e resolver problemas rapidamente em seus contêineres.
Para saber mais, consulte os recursos a seguir:
- Monitorar o desempenho do cluster do Kubernetes com os insights do contêiner
- Configurar o monitoramento de GPU com os insights de contêiner
- Monitorar e visualizar configurações de rede com o gerenciador de políticas de rede do Azure
- Monitorar implantações e métricas de HPA com insights de contêiner
- Monitorar métricas de PV (volume persistente)
- Monitorar a segurança com o Syslog
- Relatórios em insights de contêiner
- Métricas coletadas pelos insights de contêiner
- Exibir logs, eventos e métricas de pod do Kubernetes em tempo real
- Exibir 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 do 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 preparaçã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 preparaçã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 preparaçã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 (contêineres prontos) corresponda ao segundo número (contêineres totais) para o pod. Se eles diferirem, 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
e StatefulSet
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 de preparação atual das réplicas em uma implantação.
O primeiro número representa o número de réplicas prontas e disponíveis para atender ao tráfego. Essas réplicas foram iniciadas com êxito e passaram em suas verificações de preparação. O segundo número representa o número desejado de réplicas especificadas na configuração de implantação. É o número de destino de réplicas que a implantação visa 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 DaemonSet em todos os namespaces:
kubectl get ds -A
Você pode executar o comando kubectl get ds
para verificar se um DaemonSet
está sendo executado conforme o esperado. Por exemplo, você pode executar o seguinte comando para verificar se o agente de insights de contêiner 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 em Monitorar o Prometheus gerenciado, poderá executar o comando a seguir para verificar se o DaemonSet
foi implantado 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 recursos DaemonSet
em seu cluster. Examine a saída para garantir que o número de pods nos estados pronto, atual e desejado seja igual. Se forem iguais, o número desejado de pods especificados na configuração DaemonSet
é igual ao número de pods que estão em execução e prontos.
Recomendamos que você execute a mesma verificação para os recursos ReplicaSet. Você pode usar o comando a seguir para recuperar os recursos ReplicaSet
em todos os namespaces:
kubectl get rs -A
Certifique-se de que os números nessa saída sejam os mesmos para cada estado, de modo que o número pretendido de pods ou réplicas esteja sendo executado conforme o esperado. 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. Esse 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. Esse comando é útil para depuração e solução de problemas. Você pode exibir 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, você não precisará especificar o nome do contêiner. Você também pode usar o -f
sinalizador with kubectl logs
para acompanhar os logs em tempo real. Esse sinalizador é semelhante ao comando tail -f
do Linux.
kubectl events: você pode usar o comando kubectl events para solucionar problemas quando uma implantação, DaemonSet
, ReplicaSet
ou pod não é iniciado ou encontra um problema durante a inicialização. Esse 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
, você pode executar o comando kubectl events
seguido de 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 deseja investigar. A saída do comando kubectl events
exibe informações como o tipo de evento (normal ou aviso), a mensagem de evento, o motivo do evento e o carimbo de data/hora quando 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, DaemonSet
ou ReplicaSet
está enfrentando problemas, você pode 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 os eventos para que você possa reunir detalhes importantes sobre possíveis erros, falhas ou outros eventos que possam ter impedido que o recurso seja iniciado corretamente. Use esses dados para ajudar a solucionar e resolver problemas que afetam o recurso.
Monitoramento em cluster com o Prometheus e o Grafana
Se tiver implantado o Prometheus e o Grafana em seu cluster do AKS, você poderá usar o Painel de Detalhes do Cluster K8 para obter insights. 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 o Espaço Gerenciado do Azure para Grafana
Você pode usar painéis predefinidos para visualizar e analisar métricas do Prometheus. Para fazer isso, você deve configurar seu cluster do AKS para coletar métricas do Prometheus em Monitorar o serviço gerenciado para Prometheus e conectar seu espaço de trabalho do Monitor a um espaço de trabalho do Espaço Gerenciado do Azure para Grafana.
Instale os painéis predefinidos para obter uma visão abrangente do desempenho e da integridade do cluster do Kubernetes. Para obter instruções de instalação detalhadas, consulte MixIn de monitoramento do Prometheus para Kubernetes. Os painéis são provisionados na instância especificada do Espaço Gerenciado do Azure para Grafana na pasta Prometheus Gerenciado. 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ós/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 do 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 adaptados às suas necessidades de monitoramento. Os painéis ajudam você a monitorar e analisar com eficiência as métricas do Prometheus em seu cluster do 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 do Linux. Você pode visualizar o uso da CPU, a cota da CPU, o uso de memória e a cota de memória para cada pod.
O painel Kubernetes/Recursos de Computação/Pod do Grafana fornece insights sobre o consumo de recursos e métricas de desempenho de um cluster, namespace e pod selecionado. Você pode usar esse painel para obter métricas relacionadas ao uso da CPU, à limitação da CPU, à cota da CPU, ao uso da memória, à cota de memória, às métricas de rede e às métricas de armazenamento. No painel, selecione um cluster, namespace e pod AKS dentro do namespace escolhido para ver os seguintes detalhes:
Uso da CPU: esse 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: esse 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: esse gráfico mostra a cota de CPU alocada para o pod selecionado. Se o pod exceder sua cota de CPU atribuída, ele poderá exigir ajustes de recursos.
Uso de memória: esse 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: esse 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 detectar possíveis gargalos ou anomalias de rede.
Métricas de armazenamento: essa 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/Recursos de Computação/Pod do Grafana para obter insights sobre o uso de recursos, desempenho e comportamento de pods em seu cluster do 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.
Colaboradores
Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.
Autor principal:
- Paolo Salvatori | Engenheiro de Clientes Principal
Outros colaboradores:
- Kevin Harris | Especialista Principal em Soluções
- Francis Simy Nazareth | Especialista Técnico Sênior
Para ver perfis não públicos do LinkedIn, entre no LinkedIn.