O que é o monitoramento do Kubernetes?
Definição de monitoramento do Kubernetes
O monitoramento do Kubernetes é um sistema de geração de relatórios que ajuda as equipes de DevOps e de TI a identificar problemas e gerenciar proativamente clusters do Kubernetes complexos. O monitoramento eficaz do Kubernetes permite o gerenciamento em tempo real de toda a sua infraestrutura em containers. Ele controla o tempo de atividade e as utilizações de recursos do cluster, como memória, CPU e armazenamento, bem como as interações dos componentes do cluster.
Com o monitoramento do Kubernetes, os operadores do cluster podem monitorar a funcionalidade. Ele relata quando o número de pods necessários não está em execução, quando a utilização de recursos se aproxima dos limites críticos e quando um pod ou nó não pode ingressar em um cluster devido a uma falha ou erro de configuração.
O monitoramento do Kubernetes fornece informações sobre a integridade interna, contagens de recursos e métricas de desempenho do cluster. Ele também possibilita que você descubra e resolva problemas rapidamente por meio de alertas proativos e detecção de anomalia com base em machine learning. Saiba mais sobre como a ferramenta certa de monitoramento do Kubernetes pode ajudar você a entender o status e a integridade dos seus clusters do Kubernetes (e das aplicações executadas neles) visualizando de forma unificada os logs, as métricas e os traces gerados.
O que é o Kubernetes?
O Kubernetes (K8s) é um sistema open source de orquestração de containers para automatizar a implantação de software, redimensionar e gerenciar aplicações em containers. Originalmente desenvolvido pelo Google em 2014, o projeto agora é mantido pela Cloud Native Computing Foundation (CNCF). O Kubernetes elimina muitos dos processos manuais envolvidos no gerenciamento de aplicações em containers. A orquestração de containers combina containers individuais em um todo coeso e coordenado.
O Kubernetes pode ser implantado em várias plataformas de nuvem, bem como em sistemas autogerenciados, para tornar as equipes de TI e de DevOps mais eficientes. Muitos provedores de serviços em nuvem, como AWS, Google e Azure, também fornecem alguma forma de serviço do Kubernetes gerenciado para seus usuários. Ao orquestrar containers em vários hosts, o Kubernetes permite:
- Maximizar os recursos necessários para executar apps
- Automatizar implantações e atualizações de aplicações
- Redimensionar aplicações em containers rapidamente
- Gerenciar serviços para garantir que as aplicações sejam executadas conforme o esperado
Por que monitorar o Kubernetes é importante?
O monitoramento do Kubernetes envolve muitos componentes menores, incluindo hosts, containers, apps em containers e sua própria plataforma do Kubernetes. Quando surgem problemas, pode ser difícil identificar as causas. Com o monitoramento adequado do Kubernetes, você pode ver onde os problemas estão acontecendo (ou estão prestes a acontecer) e tomar medidas.
As soluções de monitoramento do Kubernetes também podem fornecer relatórios e insights práticos sobre clusters, implantações, pods, nós e containers. Você também pode configurar alertas para garantir que suas equipes possam responder rapidamente a qualquer evento de segurança ou desempenho. Os dados obtidos permitem otimizar as configurações de integridade, desempenho e segurança dos seus clusters. Isso leva à utilização de recursos e à redução de custos.
O monitoramento do Kubernetes permite:
- Garantir que os recursos sejam consumidos de maneira ideal por equipes ou aplicações
- Utilizar automaticamente novos recursos quando um novo nó ingressa em um cluster
- Reimplantar cargas de trabalho nos nós disponíveis quando os hosts ficam inativos
- Provisionar atualizações e reversões com mais eficiência
Métodos de monitoramento do Kubernetes
Para monitorar o Kubernetes, você precisa ter:
- Um servidor de métricas em execução no cluster
- Um kube-state-metrics ativado
- Um mecanismo de coleta implantado
- Uma ferramenta de monitoramento do Kubernetes que possa lidar com as métricas e os logs do Kubernetes
Para obter visibilidade total de todo o seu ambiente, uma ferramenta abrangente de observabilidade pode monitorar os dados do Kubernetes, bem como traces, métricas e logs das aplicações. - Agente implantado para coletar métricas e logs
Muitas soluções de monitoramento do Kubernetes usam uma abordagem DaemonSet porque são relativamente fáceis de provisionar. Um DaemonSet é um pod especializado que garante que uma cópia de sua carga de trabalho seja executada em todos os nós do cluster. Os desenvolvedores podem criar DaemonSets que executam um agente de monitoramento em cada nó de um cluster para coletar métricas de desempenho.
Quais são as principais métricas nos casos de uso de monitoramento do Kubernetes?
As principais métricas no monitoramento do Kubernetes são o plano de controle, nós, pods e containers.
- As métricas do plano de controle do Kubernetes ajudam você a entender o desempenho do cluster como um todo. Em seu núcleo está o kube-apiserver, que permite observar elementos como:
- Etcd. Um armazenamento de valor de chave consistente e altamente disponível usado como armazenamento de backup do Kubernetes para todos os dados do cluster.
- Kube-scheduler. Um processo de agendamento que decide onde colocar novos pods adicionando-os a uma fila para avaliar cada nó disponível antes de vinculá-los a um apropriado.
- Kube-controller-manager. Um componente que combina todos os controladores em um único processo e os executa juntos para reduzir a complexidade.
- Cloud-controller-manager. O controlador que interage com os recursos do provedor de serviços em nuvem e permite vincular seu cluster à API do provedor.
- As métricas de nó do Kubernetes monitoram o desempenho de todo o cluster do Kubernetes. Isso inclui o número de recursos usados, o número de aplicações em execução em cada nó e se os nós estão funcionando corretamente. Procure métricas de uso de recursos do nó como utilização de disco e memória, CPU e largura de banda da rede. Cada nó contém os seguintes elementos:
- Kubelet. Um agente executado em cada nó do cluster. Ele garante que os containers estejam sendo executados em um pod.
- Kube-proxy. Um proxy de rede que é executado em cada nó do seu cluster, implementando parte do conceito do Kubernetes Service.
- Tempo de execução do container. Um software que executa containers, também conhecido como mecanismo de container.
- As métricas de container do Kubernetes permitem que você avalie onde você está em comparação com os limites de recursos que configurou, incluindo métricas para uso de CPU do container, utilização de memória do container e uso de rede.
- As métricas de pod do Kubernetes podem informar se todos os pods em uma implantação estão sendo executados corretamente. As métricas de aplicação informam sobre o desempenho e a disponibilidade das aplicações em execução nos pods do Kubernetes, incluindo elementos como tempo de atividade e tempo de resposta, capacidade de resposta e latência.
Desafios de monitoramento do Kubernetes
A migração de aplicações tradicionais para o Kubernetes pode ser demorada. Embora o Kubernetes possa simplificar a implantação de aplicações em containers e em nuvens diferentes, sua complexidade traz seu próprio conjunto de desafios.
A orquestração de containers do Kubernetes oferece poder de automação dinâmico. Portanto, requer sistemas de monitoramento igualmente dinâmicos para inspecionar componentes individuais e habilitar alertas. Um dos desafios de monitoramento apresentados pelas aplicações executadas em ambientes dinâmicos em containers é sua complexidade. Como você diagnostica e resolve problemas com centenas de microsserviços em milhares de containers, em execução em pods efêmeros e descartáveis?
Práticas recomendadas de monitoramento do Kubernetes
As práticas recomendadas de monitoramento do Kubernetes são consistentes, independentemente de seus nós serem implantados no mesmo local, em nuvens diferentes ou em uma nuvem híbrida. A coleta de métricas deve acontecer da mesma maneira em todo o cluster. Aqui estão algumas práticas recomendadas úteis a serem consideradas no monitoramento do Kubernetes:
- Use espaços de nome para organizar seu cluster, simplificar o gerenciamento de containers e minimizar riscos.
- Atualize para a versão mais recente do Kubernetes para ter acesso a novos recursos, correções de bugs e patches de segurança.
- Entenda os alertas do Kubernetes configurando o monitoramento automatizado.
- Configure o controle de acesso por função (RBAC) para gerenciar permissões e acesso a usuários e contas de serviço.
- Configure notificações push para os administradores do cluster e defina as equipes responsáveis pela resolução de problemas específicos.
- Use rótulos para organizar seus clusters e defina e gerencie objetos.
- Reduza os erros configurando um fluxo de trabalho simplificado baseado em Git.
As soluções de monitoramento do Kubernetes mais bem-sucedidas atendem aos seguintes requisitos:
- Monitorar todas as camadas da sua stack de tecnologia. Todos os sistemas host — componentes básicos do Kubernetes, nós, pods e containers dentro do cluster — e todas as aplicações e os serviços devem ser rastreados.
- Detectar e monitorar automaticamente os serviços conforme eles aparecem dinamicamente.
- Fornecer uma maneira de coletar e correlacionar dados para que você possa agrupar e explorar métricas, logs, traces e outros dados de observabilidade relacionados.
- Integrar-se com padrões abertos, como Prometheus e OpenTelemetry, para coletar métricas adicionais.
Aqui estão algumas práticas recomendadas para observar e proteger fluxos de trabalho de aplicações e serviços no Kubernetes usando o Elasticsearch e o OpenTelemetry.
Kubernetes x Docker
O Kubernetes é diferente do Docker porque opera aplicações em containers em escala. O Docker é um conjunto de ferramentas de desenvolvimento de software para criar, compartilhar e executar containers individuais.
O Docker emprega uma arquitetura cliente-servidor com comandos simples e automação por meio de uma única API. Ele fornece uma maneira fácil de empacotar e distribuir aplicações em containers.
As imagens de container criadas com o Docker podem ser executadas em uma plataforma compatível com containers, como Kubernetes ou Docker Swarm. O Kubernetes é melhor do que o Docker para executar, gerenciar, agendar e orquestrar grandes volumes de containers em vários servidores e clusters. O Kubernetes é preferido pela maioria das grandes empresas para monitorar sua integridade e equilibrar cargas com eficiência.
Fundamentalmente, o Kubernetes vem com uma API e uma ferramenta de linha de comando que permite automatizar as operações. O Kubectl simplifica muito o gerenciamento de containers. O Kubernetes é uma plataforma para executar e gerenciar containers de vários tempos de execução, incluindo os tempos de execução de container do Docker. A capacidade de gerenciar automaticamente uma variedade de elementos torna o Kubernetes particularmente flexível. As equipes de TI economizam tempo devido à sua confiabilidade, simplificando seu fluxo de trabalho geral.
Dashboard de monitoramento do Kubernetes
O Kubernetes baseado na web tem um dashboard intuitivo que oferece uma visão geral dos recursos e nós individualmente e em diferentes clusters. É uma maneira simples de implantar aplicações em containers, gerenciar recursos e solucionar problemas.
O dashboard pronto para uso da Elastic, mostrado abaixo, inclui todos os espaços de nome e classes de armazenamento definidas do cluster. Há também uma visão geral listando todos os nós, espaços de nome e volumes de armazenamento persistentes. Ele é completo com métricas de nós agregadas e detalhadas.
Você pode ver reivindicações de volume persistente para cada aplicação em cluster e uma visão completa de todos os recursos do Kubernetes em execução no cluster. Ele também exibe todas as aplicações em execução em um espaço de nome selecionado, o uso atual de memória dos pods e o número de pods prontos para uma implantação ou ReplicaSet.
Monitoramento do Kubernetes com a Elastic
Com o Elastic Observability, você pode reunir logs, métricas e traces do seu cluster do Kubernetes e das cargas de trabalho executadas nele em uma plataforma unificada. Isso permite que você identifique problemas com seus serviços de aplicação de forma eficaz. Métricas e logs de clusters do Kubernetes podem ser usados com a detecção de anomalia baseada em machine learning da Elastic para reduzir o tempo de análise de dados.
A solução de monitoramento do Kubernetes da Elastic oferece visibilidade em tempo real do seu ecossistema do Kubernetes com um conjunto inigualável de recursos. Construída com base no Elastic Stack, a solução de observabilidade permite que você implante e opere suas arquiteturas do Kubernetes de maneira transparente. Ao unificar seus logs, métricas e traces de APM em escala em uma única visualização, você pode controlar com eficácia a complexidade de aplicações nativas de nuvem altamente distribuídas. Você também obtém observabilidade prática para a sua stack de tecnologia nativa da nuvem e o monitoramento da nuvem. Assim, você pode detectar e resolver problemas proativamente em ecossistemas híbridos e multinuvem em expansão.
Glossário de monitoramento do Kubernetes
Aqui estão alguns termos-chave do Kubernetes para sua referência.
Clusters
Um conjunto de máquinas de trabalho, chamadas de nós, que executam aplicações em containers. Cada cluster tem pelo menos um nó de trabalho.
Nó
Um nó é uma máquina de trabalho no Kubernetes.
- Nó master
Termo legado, usado como sinônimo de nós que hospedam o plano de controle. - Nó de trabalho
Os nós de trabalho hospedam os pods que são os componentes da carga de trabalho da aplicação.
Pod
O menor e mais simples objeto do Kubernetes. Um pod representa um conjunto de containers em execução no seu cluster.
Container
Uma imagem executável leve e portátil que contém software e todas as suas dependências
Controlador
No Kubernetes, os controladores são loops de controle que observam o estado do seu cluster e, em seguida, fazem ou solicitam alterações quando necessário. Cada controlador tenta mover o estado atual do cluster para mais perto do estado desejado.
Kubelet
Um agente executado em cada nó do cluster. Ele garante que os containers estejam sendo executados em um pod.
Kube-proxy
Um proxy de rede que é executado em cada nó do seu cluster, implementando parte do conceito do Kubernetes Service.
Etcd
Um armazenamento de valor de chave consistente e altamente disponível usado como armazenamento de backup do Kubernetes para todos os dados do cluster.
Ingress
Um objeto de API que gerencia o acesso externo aos serviços em um cluster, geralmente HTTP. O Ingress pode fornecer balanceamento de carga, terminação SSL e hospedagem virtual baseada em nome.