Home avatar

Roberta Brandão

Observabilidade no Kubernetes

Como instrumentar uma infraestrutura em MicroK8s para coleta de métricas e traces de aplicações com Grafana

O Kubernetes tornou-se uma plataforma essencial para orquestração de contêineres, e o MicroK8s é uma solução leve e fácil de usar para quem deseja rodar Kubernetes localmente ou em ambientes de desenvolvimento. No entanto, à medida que suas aplicações crescem em complexidade, a necessidade de monitoramento e observabilidade torna-se crítica.

Vale ressaltar que Kubernetes e a observabilidade são componentes essenciais para a gestão de aplicações modernas em ambientes de nuvem, mas sua implementação pode levar a um aumento significativo nos custos se não forem gerenciados de forma eficiente. Por exemplo, o Kubernetes pode escalar automaticamente os recursos com base na demanda, o que é ótimo para garantir a disponibilidade da aplicação, mas também pode resultar em custos imprevistos. Um cluster Kubernetes que escala horizontalmente (HPA - Horizontal Pod Autoscaler) pode criar múltiplas réplicas de pods durante picos de tráfego, consumindo mais recursos de CPU, memória e armazenamento. Se esses recursos não forem otimizados ou se o dimensionamento automático for configurado de forma agressiva, a infraestrutura pode acabar utilizando mais instâncias de nuvem do que o necessário, elevando a fatura mensal.

Fundamentos do Sistema Linux

Seguimos com um procedimento sobre a base do linux, com explicações diretas sobre comandos essenciais na administração do Linux. Para uma introdução mais histórica, sugiro acessar os links do tópico 1 do artigo de Curadoria de Aprendizagem Linux

No Linux, tudo é representado como um arquivo ou diretório. A estrutura segue o padrão Filesystem Hierarchy Standard (FHS):

DiretórioDescrição
/Raiz do sistema de arquivos, tudo começa aqui.
/binBinários essenciais (comandos básicos, ex: ls, cp).
/sbinBinários administrativos (ex: fdisk, shutdown).
/homeDiretórios dos usuários (/home/usuario).
/rootDiretório do superusuário root.
/etcArquivos de configuração do sistema.
/varDados variáveis (logs, filas de impressão, cache).
/tmpArquivos temporários (limpos após reinicialização).
/usrAplicações e bibliotecas não essenciais.
/optAplicações opcionais instaladas manualmente.
/devArquivos de dispositivos (ex: /dev/sda para discos).
/procInformações do sistema e processos em tempo real.
/sysInformações sobre hardware e kernel.
/mnt e /mediaPontos de montagem para dispositivos externos.

pwd        # Mostra o diretório atual
ls         # Lista arquivos e diretórios
ls -l      # Lista detalhada
ls -a      # Inclui arquivos ocultos
cd /etc    # Acessa o diretório /etc
cd ~       # Volta para o diretório do usuário
cd ..      # Volta um nível
cd -       # Alterna para o diretório anterior
mkdir novo_dir    # Cria um diretório
rmdir vazio       # Remove um diretório vazio
rm arquivo.txt    # Remove um arquivo
rm -rf pasta/     # Remove uma pasta e seu conteúdo
cp origem destino # Copia um arquivo ou diretório
mv origem destino # Move ou renomeia arquivos/diretórios
touch novo.txt    # Cria um arquivo vazio
cat arquivo.txt   # Exibe o conteúdo do arquivo
less arquivo.txt  # Permite rolar pelo arquivo
head arquivo.txt  # Mostra as primeiras 10 linhas
tail arquivo.txt  # Mostra as últimas 10 linhas
find /home -name "*.txt"  # Busca arquivos por nome
grep "erro" log.txt       # Procura a palavra "erro" em um arquivo
ls -l arquivo.txt  # Exibe permissões do arquivo
chmod 755 script.sh  # Modifica permissões (rwxr-xr-x)
chown user:grupo arquivo.txt  # Muda dono do arquivo
ps aux      # Lista processos em execução
top         # Exibe processos ativos em tempo real
kill PID    # Mata um processo pelo ID
df -h       # Mostra espaço em disco
du -sh pasta/  # Mostra tamanho de uma pasta
uptime      # Mostra tempo ligado do sistema

Arch Linux (Pacman)

Guia Rápido para Iniciar com MicroK8s

Guia simples e prático de como iniciar no mundo do Kubernetes com MicroK8s.

O MicroK8s é uma distribuição leve e otimizada do Kubernetes , projetada para facilitar o desenvolvimento local, testes e até mesmo ambientes de produção em dispositivos pequenos, como o Raspberry Pi.

Ele é interessante porque:

  • É fácil de instalar e roda como um único snap.
  • Consome menos recursos do que um cluster Kubernetes completo.
  • Tem suporte nativo a add-ons úteis como Istio, MetalLB, DNS e outros.

O MicroK8s é distribuído via Snap , então basta rodar:

Problemas de recursos em PODs no Kubernetes

Me perguntaram bastante sobre como exemplificar a configuração incorreta de requests e limits de CPU e memória, resultando falhas em pods sendo OOMKilled ou throttled sem explicação aparente. Vamos para algumas definições bem práticas sem enrolação:

- OOMKilled (Out of Memory Killed) : Ocorre quando um pod consome mais memória do que o limite definido. O Kubernetes força a finalização do container para liberar memória, podendo gerar downtime e impactar a aplicação.

Redes no Kubernetes com Base no Tanenbaum

Um guia bem prático de como começar a estudar Kubernetes baseado no livro de redes do Tanenbaum

Tanenbaum : Capítulos sobre Camadas de Rede e Modelo OSI/TCP-IP
No Kubernetes
: Entenda como pods, nodes e serviços interagem via redes virtuais.
O que estudar?

  • Comunicação entre pods e nodes (CNI – Container Network Interface)
  • Namespace de rede e isolamento no Linux
  • Como o tráfego de rede é roteado dentro do cluster

Mão na Massa

Curadoria de Aprendizagem Linux

Este é um guia inicial para quem deseja começar a estudar Linux.

E pra quem está começando no mundo de DevOps e Infra de datacenter, conhecimento e prática são primordiais. Mas não se assuste com o volume de conteúdo, pois este é um guia de estudos.

🐧

Dica de Ouro : Recomendo o site do Guia Foca, que possui materiais separados por níveis iniciante, intermediário e avançado, em texto ou PDF para download. É meu guia no linux desde sempre.