Kubernetes: dicas e truques na orquestração de containers - Parte 1

Renato Groffe
4 min readNov 18, 2019

--

Neste novo artigo inicio uma série com diversas dicas e truques envolvendo o uso do Kubernetes como solução para orquestração de containers Docker. Sempre que possível darei andamento a esta iniciativa, com novos conteúdos e orientações úteis a profissionais da área de Desenvolvimento, Infraestrutura e DevOps.

Aproveito este post para deixar aqui também um convite. Entre os dias 2 e 4 de Dezembro/2019 acontecerá o DevWeek 2019, o evento de final de ano do Canal .NET voltado a desenvolvedores de software.

Serão 9 palestras noturnas, gratuitas e online ao longo de 3 dias, cobrindo diversas tecnologias e temas de destaque na área de software (sobretudo .NET, Microsoft Azure, Docker e Kubernetes).

Para efetuar sua inscrição acesse e faça sua inscrição pelo Meetup, a transmissão será via YouTube e a grade será divulgada em breve.

Azure Kubernetes Service (AKS): criando um cluster Kubernetes na nuvem Microsoft

Tendo por objetivo simplificar o gerenciamento e a operação de clusters do Kubernetes, o Azure Kubernetes Service (AKS) é um serviço que integra a plataforma de cloud computing da Microsoft.

Já abordei a criação de ambientes e a implementação de soluções com essa alternativa no seguinte artigo:

Orquestração de containers na Nuvem com o Azure Kubernetes Service (AKS) | Microsoft Tech

E também em um webcast gravado para a Microsoft (juntamente com meu amigo Milton Câmara - Microsoft MVP) e que pode ser assistido gratuitamente através do seguinte link:

Kubernetes: do Pod ao Deployment Automatizado

Na imagem a seguir é possível observar um recurso do AKS com 2 nodes Linux:

A infraestrutura alocada por este recurso pode ser observada na próxima imagem:

Cronjobs: execução pré-agendada de Jobs/rotinas de processamento

Embora o uso do Kubernetes esteja comumente associado ao deployment de soluções Web, temos também a opção de publicar num cluster aplicações que executarão como rotinas de maneira periódica: isto é possível através da criação de jobs automatizados conhecidos como CronJobs.

Nesta seção demonstrarei a publicação de um CronJob em um cluster Kubernetes, fazendo uso para isto da seguinte imagem pública disponibilizada no Docker Hub:

renatogroffe/job-monitor-sites-3-0

O job correspondente a tal imagem foi implementado utilizando .NET Core 3.0, com o código do mesmo já disponibilizado no GitHub:

.NET Core 3.0 + Console Application + Azure Table Storage + Serilog + Docker

O conteúdo do arquivo YAML com as definições para a criação de um CronJob está na listagem a seguir:

  • Em kind foi especificado o tipo do objeto (CronJob);
  • O nome do job (cronjob-monitor-sites) está indicado na propriedade name de metadata;
  • Dentro de spec temos a propriedade schedule, em que uma cron expression será utilizada para determinar a periodicidade com que acontecerá o processamento. Neste exemplo foram definidas execuções a cada 2 minutos;
  • Já em container temos especificada a imagem que servirá de base para a geração do CronJob (renatogroffe/job-monitor-sites-3–0). Em env foi configurada a string de conexão (BaseMonitoramento) ao Azure Table Storage, valor este indicado na imagem anterior.

Para criar o CronJob baseado neste arquivo YAML executar o seguinte comando (via PowerShell ou Bash):

kubectl create -f .\cronjob-monitoramentosites.yaml

Com o comando:

kubectl get cronjobs

Podemos verificar o status atual do CronJob. No exemplo da próxima imagem é possível notar que o job está suspenso, aguardando uma próxima execução:

Ao consultar a tabela Monitoramento vinculada à conta storagegroff teremos os resultados de execuções do CronJob:

--

--

Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker