O Kubernetes agora é executado em mais de 70% dos ambientes de contêiner, contudo o monitoramento se tornou uma forma importante de extrair o máximo de informações possível durante o tempo de execução do contêiner. Esses dados são essenciais para a solução de problemas. Também é essencial para otimizar o desempenho, tanto proativa quanto reativamente.
No entanto, o Kubernetes apresenta um desafio único em duas frentes: configuração e monitoramento. Para começar, é difícil realmente acertar sua implantação de uma maneira organizada e de alto desempenho. Erros comuns envolvem dimensionamento incorreto de seus nós, consolidação de contêineres ou criação adequada de namespaces. Fazer solicitações de recursos por meio de um arquivo de configuração ou kubectl
requer forte previsão.
Considere o seguinte: aproximadamente 49% dos contêineres usam menos de 30% da alocação de CPU solicitada e 45% dos contêineres usam menos de 30% da memória alocada. O monitoramento em tempo real pode ajudar a prevenir esses problemas. Recursos ociosos são caros e não fornecem nenhum benefício real ao seu ecossistema.
Rastreamento de métricas
Esses passos em falso podem exigir mitigação mais cedo ou mais tarde. Da mesma forma, rastrear de forma confiável as métricas de tempo de execução, como latência, utilização de CPU e uso de memória, costuma ser complicado. Outras métricas importantes incluem o seguinte :
- Métricas de estado do cluster, como integridade e disponibilidade do pod
- Status do nó – incluindo status de prontidão, carga de CPU / memória / disco e status da rede
- Disponibilidade do pod
- Utilização de disco
O Kubernetes nem sempre se destaca na exibição desses dados de maneira significativa e legível. Depende de você – o profissional DevOps – reunir soluções sob medida. Projetar um painel personalizado é difícil e demorado. Felizmente, vários fornecedores terceirizados criaram ferramentas de visualização capazes para o Kubernetes. Como essas ferramentas são de código aberto, elas também fazem interface de maneira eficaz com algumas tecnologias adjacentes.
Quer manter sua implantação do Kubernetes íntegra e funcionando? Acompanhe para saber mais sobre esses melhores painéis de código aberto do Kubernetes.
Critério de avaliação
Como você avalia o que torna uma ferramenta favorável? Para fins de análise, vamos mergulhar principalmente nessas categorias de avaliação:
- Disponibilidade de métricas
- Usabilidade
- Requisitos de configuração e manutenção
Essas comparações têm mais nuances do que apenas comparar números concretos. É importante observar os recursos de destaque e todos os recursos que distinguem uma ferramenta da outra. O “molho secreto” de cada solução, por assim dizer, pode ser benéfico de maneira única para sua implantação personalizada. Existem também muitas maneiras subjetivas de medir o valor de uma ferramenta. A qualidade da documentação, a apresentação das informações e até mesmo as diferenças na interface gráfica do usuário (GUI) podem moldar as opiniões do ferramental.
Este guia concentra-se predominantemente em aspectos objetivos, mas apresentará outras características notáveis que podem influenciar sua decisão. Equilibrar as necessidades funcionais com as preferências pessoais é fundamental. Aqui estão algumas das principais opções tanto do lado do servidor quanto do cliente:
Ferramentas do lado do servidor
Muitas equipes podem optar por ferramentas de monitoramento do lado do servidor para capturar dados do Kubernetes. O Kubernetes captura nativamente os dados de utilização de recursos e os agrega em um banco de dados. Isso é conhecido como pipeline de métricas de recursos . Tanto o controlador horizontal do autoescalador quanto o utilitário kubectl-top
geram esses dados durante o uso, que o Kubernetes coleta temporariamente por meio de um servidor de métricas na memória. Essas informações são expostas por meio da API metrics.k8s.io
, que permite que serviços externos acessem os dados de uso.
O metrics-server solicita todas as métricas de recursos dos nós de cluster descobertos por meio de kubelet
. Além disso, kubelet
vai se aprofundar ao traduzir pods em contêineres associados – expondo essas informações com a API Resource Metrics.
Além disso, as equipes de DevOps podem aproveitar todo o pipeline de métricas para visualizar dados mais complexos. Isso também se conecta aos nós via kubelet
, mas as APIs custom.metrics.k8s.io
ou external.metrics.k8s.io
expõem essas informações. Observe que o Kubernetes pode reagir nativamente com base nessas métricas coletadas para neutralizar problemas. O ônus não é inteiramente do lado do desenvolvimento.
O rastreamento de métricas baseado em servidor tem algumas vantagens significativas. Este método de coleta é confiável devido à sua abordagem de coleta simplificada; você não precisa lutar com milhares de nós, pods ou contêineres individualmente. Como o rastreamento do servidor alivia a carga de sua infraestrutura Kubernetes, você também verá uma melhoria no desempenho. É relativamente fácil organizar seus dados conforme necessário do servidor, uma vez que ele esteja instalado e funcionando.
No entanto, nenhum sistema é perfeito e esse fato também se aplica ao monitoramento do lado do servidor. Essas soluções podem ser mais difíceis de configurar, pois você precisa instalar componentes essenciais em seu sistema que podem transmitir dados com eficácia para outro lugar. Pode haver mais pontos de falha em todo o sistema. As transições do lado do servidor também podem ser mais caras. A amplitude geral dos dados do lado do servidor que você coleta pode ser mais limitada – ou pelo menos estar perdendo alguns insights cruciais de interesse. Os logs do servidor nem sempre podem ser lidos por humanos e os logs podem ser retidos apenas por um tempo limitado, a menos que sejam arquivados.
Dito isso, milhões de usuários passaram a adorar suas ferramentas de monitoramento do lado do servidor. Aqui estão alguns dos principais cães da categoria que se tornaram nomes conhecidos:
Painel do Kubernetes
Imagem cortesia de Chuka Ofili .
Oferecido de forma nativa por meio do navegador da web, o Kubernetes Dashboard opera como um aplicativo da web, oferecendo uma visão detalhada do seu ambiente em contêiner, o qual auxilia no monitoramento. Embora algumas soluções de código aberto sejam somente leitura, o painel permite que você implante, solucione problemas e gerencie ativamente os componentes do sistema. A ferramenta é excelente no gerenciamento de recursos do sistema (Jobs, DaemonSets, implantações) e aplicativos. É essencial monitorar o sistema e os microsserviços executados nele.
Você também pode monitorar o seguinte por meio do Painel, todos acessados ??facilmente por meio da barra lateral esquerda:
- Namespaces
- Nós
- Volumes persistentes
- Funções
- Classes de armazenamento
- Cron jobs
- Conjuntos de réplicas e controladores de replicação
- Conjuntos com estado
- Parâmetros de descoberta e balanceamento de carga
- Configurações e configurações de armazenamento
Cada uma dessas categorias tem uma visão detalhada com infográficos fáceis de ler. Como o painel do Kubernetes é baseado na web, você pode acessá-lo de qualquer lugar a qualquer momento. Isso o torna uma ferramenta fantástica e independente de plataforma que funciona admiravelmente independentemente do sistema operacional de alguém – ou mesmo da arquitetura de cluster. Para implantar um aplicativo em contêiner, basta conectar seu arquivo de configuração YAML ou JSON com o assistente de configuração integrado.
No lado do registro, o Visualizador de registros integrado extrai registros de contêineres pertencentes a pods únicos e os exibe em um formato de lista. Essa saída é organizada em ordem cronológica para facilitar a análise. Você pode baixar esses logs específicos conforme necessário com um único clique.
O Dashboard não é instalado por padrão. Execute o seguinte comando para implantá-lo:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml
Você pode acessar o Dashboard kubectl
por meio da execução do kubectl proxy
comando. Apenas as máquinas que executaram este comando podem visualizar a IU do Dashboard. Além disso, sua implantação irá aderir aos padrões simples de controle de acesso baseado em função (RBAC), necessitando exclusivamente de um token de portador para o login bem-sucedido.
Skooner (anteriormente K8dash)
Depois de receber uma reformulação e um novo nome, o Skooner continua a ser uma ferramenta de código aberto líder para monitorar o Kubernetes de forma holística. Os desenvolvedores por trás do projeto elogiam a simplicidade e a disponibilidade em tempo real de sua solução – nenhuma atualização ou pesquisa manual é necessária para buscar os dados do sistema à medida que são coletados. Além disso, o YAML fornecido no repositório de recursos da ferramenta permite que você comece a aproveitar o Skooner em apenas um minuto.
Há muito pouca curva de aprendizado envolvida no lado da configuração. Tudo que você precisa é um cluster Kubernetes em execução, um servidor de métricas recomendado instalado e uma configuração opcional OpenID Connect. Ao contrário do Kubernetes Dashboard, você pode fazer login no Skooner usando um dos três métodos: um token de conta de serviço, OpenID Connect (OIDC) ou via NodePort. O primeiro é o mais fácil, enquanto o último é o mais rápido, de acordo com os desenvolvedores. Aqueles que favorecem o OpenID naturalmente gravitarão em torno do OIDC. Observe que kube proxy
não pode ser usado para acessar este painel, pois o cabeçalho de autorização é removido durante a execução.
Aqui está o que você pode visualizar usando o Skooner:
- Namespaces
- Nós
- Pods
- Conjuntos de réplicas
- Implantações
- Armazenar
- Configurações RBAC
- Cargas de trabalho
O Skooner depende muito do servidor de métricas para obter as métricas de tempo de execução. Sem esse componente instalado, a funcionalidade da plataforma sofrerá um certo grau. Será muito mais difícil convocar dados de utilização, por exemplo, sem acessar esse pipeline.
No entanto, o Skooner traz seu aplicativo móvel para a mesa. Ele funciona na maioria dos telefones ou tablets, permitindo que você acompanhe as métricas cruciais enquanto está em trânsito. A solução é altamente escalonável – respondendo bem às mudanças nas configurações e no crescimento do sistema Kubernetes, enquanto continua a obter informações relevantes de maneira confiável.
Prometeu
Por último, mas não menos importante, o Prometheus é uma ferramenta de código aberto muito popular mantida pela Cloud Native Computing Foundation (CNCF). Como tal, goza de apoio significativo e apoio ao desenvolvimento por parte da comunidade em geral. Você notará uma diferença imediata de GUI entre este e os outros participantes de nossa lista; Prometheus usa uma paleta mais escura e organiza suas visualizações de maneira um pouco diferente. As informações são exibidas de forma mais densa de acordo com o terminal, o host e a porta. O Prometheus ajuda a monitorar o seguinte:
- Utilização da CPU (incluindo contagens de núcleo)
- Uso de RAM (incluindo total disponível)
- Uso de memória SWAP (do total)
- Uso do sistema de arquivos raiz (do total)
- Carga do sistema da CPU (por intervalo médio)
- Tempo de atividade
O Prometheus armazena dados como uma série temporal, onde as métricas têm fluxos de valores com registro de data e hora. Cada métrica também tem seu próprio conjunto de dimensões rotuladas. Normalmente, eles são armazenados, embora o Prometheus possa gerar séries temporárias a partir de consultas proprietárias do PromQL. Visualmente, as métricas são comumente exibidas como gráficos e similares ao vincular o Prometheus ao Grafana – que extrai de uma fonte de dados atribuída.
Para começar a usar o Prometheus, você deve instalar seu componente exportador em cada nó relevante do Kubernetes. Isso atua como um serviço que transmite dados de tempo de execução para o banco de dados e painel posteriormente. Você pode configurar um modelo de dados multidimensional usando consultas e pares de valores-chave.
Você pode instalar o Prometheus usando um binário pré-compilado, por meio de imagens e volumes do Docker ou sistemas de gerenciamento de configuração como Chef ou Ansible. O Prometheus também é bom em automonitoramento por meio do uso de APIs incluídas. Finalmente, a enorme comunidade da Prometheus pode fornecer ajuda com essa tarefa ou qualquer outra faceta do processo de monitoramento para Kubernetes.
Ferramentas exclusivas do cliente
Ao contrário do monitoramento baseado em servidor, as ferramentas exclusivas do cliente são melhores para equipes que precisam de uma solução fácil sem configuração excessiva. Geralmente são mais baratos e têm menores barreiras de entrada. Aqueles que executam aplicativos sem estado, em particular, podem se beneficiar do monitoramento do lado do cliente, já que a sessão crítica ou os dados de recursos não são normalmente armazenados no servidor. Aqui estão nossas escolhas:
Lens by Mirantis
Como uma ferramenta de monitoramento focada em operações, o Lens é um ambiente de desenvolvimento integrado (IDE) popular do Kubernetes que atua como uma plataforma multidisciplinar de integração contínua / entrega contínua (CI / CD). O serviço agrupa um terminal contextual com estatísticas derivadas do Prometheus, garantindo que os logs sejam facilmente visualizáveis. Os clusters monitorados podem ser locais ou externos. Da mesma forma, você pode até adicionar um cluster à combinação importando um arquivo kubeconfig.
Os clusters e suas métricas rastreadas são separados em grupos de trabalho – úteis para diferentes equipes ou para manter a segregação em implantações complexas. Você pode invocar gráficos em tempo real no painel do Lens que são personalizados para cada namespace e recurso. Graças aos controles RBAC incluídos, você pode definir quais usuários podem acessar métricas específicas para maior segurança. O Lens permanece com o código aberto e de uso gratuito.
Octant by VMWare
Como o painel do Kubernetes, o Octant é uma interface da web de código aberto para visualizar seus clusters e aplicativos. A solução oferece suporte a vários plug-ins por meio de uma API gRPC principal, tornando o Octant extensível e rico em recursos. Como outras ferramentas, ele fornece atualizações em tempo real sobre a saúde e o desempenho dos objetos do cluster, além dos objetos relacionados. Esse rastreamento de métricas detalhado tem como objetivo simplificar o processo de depuração e destacar os problemas antes que se tornem uma ameaça. Com base no kubectl
e kustomize
, o Octant é uma ferramenta simples e confiável para gerenciar o sistema Kubernetes como um todo e principalmente pra monitoramento.
Conclusão
Você deve considerar a experiência e o nível de conforto de sua equipe ou você ao escolher uma solução seja baseada em servidor ou cliente. Felizmente, as ferramentas de código aberto para monitorar Kubernetes são robustas e amplamente difundidas no mercado. Se você aproveitar informações em tempo real, manter a implantação do Kubernetes íntegra e operacional deve ser muito mais simples.
Fonte: LOFT.SH