Podcast

Jornada Microserviços- Kubernetes

Por

Em mais uma das aulas da nossa Jornada Microserviços conhecemos o Kubernetes. Você pode ouvir o conteúdo dando o play acima enquanto acompanha a leitura abaixo.

Bom aprendizado! Sem dúvidas vale o play.

O que é Kubernetes?

O Kubernetes é um orquestrador de containers. Para entender melhor, não podemos deixar de falar sobre o Docker.

Quando trabalhamos com o Docker, estamos trabalhando com containers. E o que acontece com os containers? Conseguimos reproduzir o nosso ambiente de desenvolvimento em qualquer outro local ( qualquer outra máquina).

Basicamente, um container é como uma gaveta, onde a nossa aplicação fica rodando sobre um sistema operacional. Podemos ter diversas “gavetas” rodando. Os containers são independentes, porém, podem se comunicar.

A grande vantagem de trabalhar com containers é que temos uma grande flexibilidade para subir e apagar novos containers. Não precisamos instalar uma máquina virtual inteira. Com um container, a vida é muito mais fácil. Antigamente, quando o Docker surgiu, muita gente começou a utiliza-lo como ambiente de desenvolvimento.

Por que ele facilita a nossa vida de desenvolvedores?

Por exemplo, se pegarmos um projeto com o Dockerfile e um arquivo chamado docker-compose e rodarmos em nosso terminal um docker-compose up -d. Todo o ambiente de desenvolvimento subirá imediatamente. Não teremos nenhum problema de compatibilidade. Aquela história de “Na minha máquina funciona”, com o Docker, acabou.

Mas o que acontece? Quando começaram a trabalhar com o Docker em produção, viram que o “buraco é mais embaixo”, porque, os seus sistemas começaram a ter vários containers e era necessário gerencia-los. Imagine só: milhares e milhares de aplicações, milhares de containers rodando e, às vezes, um desses containers caía. Era necessário subir novamente esse container e, por diversas vezes, esses containers eram rodados em diversas máquinas para trazer um processo de escalabilidade maior e , também, processos de disponibilidade ainda maiores. Esse processo de gerenciamento dos containers começaram a ficar cada vez mais difícil. É aí que entra o famoso Kubernetes.

Como funciona o Kubernetes?

O Kubernetes, à principio, para quem não possui experiência, pode parecer extremamente complexo. Vamos fazer um resumo, bem claro, sobre o funcionamento do Kubernetes.

No Kubernetes temos os pods. Nesses pods conseguimos guardar os nossos containers, assim sendo, poderemos ter um ou mais containers dentro de um pod. O mais interessante é que, dentro dos nossos pods poderemos ter, além dos containers, várias configurações, para que se comportem da maneira que desejamos.

Para que serve um POD?

Vamos imaginar que temos um cluster, uma central master de kubernetes. Embaixo do Kubernetes temos diversas máquinas. Por exemplo, vamos supor que trabalhamos com a Digital Ocean e temos vários droplets, ou temos várias máquinas EC2 na Amazon. Nem sabemos que existam essas máquinas, quando estão embaixo do Kubernetes, ou seja, sabemos somente a quantidade de de CPU que temos disponível em nosso cluster. Também, sabemos a o quanto de memória temos disponível. À partir disso, todas as vezes que fizermos um deploy de uma aplicação, o Kubernetes tomará conta de tudo e, somente, subiremos os nossos pods.

Quando o nosso pod sobe, não sabemos, necessariamente, em qual máquina ele estará rodando. Muitas vezes, podemos ter a mesma aplicações rodando em diversos pods e esses pods podem rodar em qualquer uma dessas instâncias, de forma totalmente transparente, portanto, não precisamos nos preocupar.

O mais interessante nesse processo de orquestração dos containers é que não precisamos mais nos preocupar caso um container ou pod começarem a ficar indisponíveis. Vamos supor que a nossa aplicação deu um crash e, dessa forma, que o nosso container ou pod caia, o Kubernetes irá identificar, automaticamente, qual foi o pod com problema e subirá um novo pod.

Uma grande sacada de trabalharmos com o Kubernetes é que, quando precisamos de maior poder computacional, adicionamos mais maquinas em nosso pull. À partir daí, o Kubernetes tomará conta de tudo. Faremos apenas o deploy da aplicação, indicaremos quantos pods queremos rodar e o Kubernetes distribuirá esses pods nas suas respectivas instâncias. Protanto, ficaremos felizes da vida, com todos os nossos containers completamente gerenciados.

Conclusão

O Kubernetes é algo que temos que aprender, mesmo que sejamos somente desenvolvedores.

A grande dica: Acessem o Cloud do Google, é muito mais fácil de trabalhar com o Kubernetes, diferente da Amazon, onde temos uma mão de obra gigante. Portanto, comecem com o Kubernetes pelo Google Cloud.

Obs.: Não esqueça de nos contar o que achou no campo de comentários logo abaixo. 😉