Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Docker, kubernetes e outras ferramentas

Pessoal, boa tarde?

Por favor, alguém explica de forma clara o que é Kubernetes e o Docker e o que eles fazem, sei que tem relação com containers e acho que virtualização de aplicações sem se importar com o sistema operacional, mas na prática ainda é dificil de entender o que cada um é, e como os dois se relacionam tanto no on-premisses, como na nuvem. Se eu não estiver falando besteira, favor mostrar como o aplicativo e a programação se comportam no container e mais alguma coisa se estiver faltando...

Obrigado.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
3 respostas
solução!

Oi, Estudante.

Ótima pergunta. É muito comum que esses conceitos pareçam um pouco abstratos no começo, mas sua intuição está totalmente correta.

O que são os Containers? (A base de tudo)

Antes de falar de Docker e Kubernetes, é fundamental entender o que é um container.

Pense em um container como uma "caixa" autossuficiente para a sua aplicação. Essa "caixa" contém tudo o que a aplicação precisa para funcionar:

  • O código da aplicação.
  • As bibliotecas e dependências (por exemplo, uma versão específica do Python ou do Java).
  • As configurações do sistema.

A grande vantagem é que essa "caixa" é isolada e padronizada. Isso significa que ela vai funcionar exatamente da mesma maneira, não importa onde você a execute: no seu notebook, em um servidor da empresa (on-premises) ou na nuvem (AWS, Google Cloud, Azure). Os containers acabam com o famoso problema do "mas na minha máquina funciona".

O que é o Docker? (A ferramenta para criar a "caixa")

O Docker é a tecnologia que permite criar, empacotar e executar esses containers. Ele é a ferramenta que você usa no seu dia a dia de desenvolvimento para construir a sua "caixa".

  • O que ele faz: O Docker pega seu código e todas as suas dependências e os empacota em uma "imagem de container". Essa imagem é um pacote pronto para uso. Depois, você pode usar o Docker para rodar essa imagem como um container na sua máquina local para testar.
  • Em resumo: O Docker é ideal para desenvolver, empacotar e executar contêineres de forma simples em ambientes locais. Ele resolve o problema de criar e testar as aplicações de forma isolada e eficiente.

O que é o Kubernetes? (O gestor de todas as "caixas"):

Agora, imagine que sua aplicação fez muito sucesso. Em vez de um único container, você agora precisa de dezenas ou centenas deles para atender a todos os usuários. Gerenciar tudo isso manualmente seria impossível. É aqui que o Kubernetes entra.

O Kubernetes, como o nome grego "timoneiro" ou "piloto" sugere, é uma ferramenta de orquestração. Ele não cria os containers, mas gerencia todos eles em larga escala.

  • O que ele faz: Ele coordena um grupo de máquinas (chamado de cluster) e distribui seus containers por elas da forma mais eficiente possível. Se uma máquina falhar, o Kubernetes move os containers para outra máquina saudável. Se a demanda aumentar, ele cria mais cópias dos seus containers automaticamente (escalabilidade).
  • O Kubernetes "orquestra containers, ajudando a lidar com aplicações que podem ser compostas por centenas deles". Ele resolve o problema de "gerenciar e escalar grandes quantidades de contêineres em ambientes distribuídos e complexos".

Como eles se relacionam (On-Premises e na Nuvem)?

Eles não são concorrentes, mas sim ferramentas complementares que trabalham em harmonia. O fluxo de trabalho é o seguinte:

  1. Desenvolvimento: Você, como pessoa desenvolvedora, usa o Docker na sua máquina para empacotar sua aplicação em uma imagem de container.
  2. Produção: Em seguida, você entrega essa imagem ao Kubernetes. O Kubernetes então se encarrega de executar e gerenciar esses containers em produção, garantindo que a aplicação esteja sempre disponível e funcionando bem.

Essa relação funciona da mesma forma, não importa onde o Kubernetes esteja rodando. Seja em servidores físicos na sua empresa (on-premises) ou em serviços de nuvem como Google Kubernetes Engine (GKE) ou Amazon EKS, o papel do Kubernetes é o mesmo: pegar as imagens de container (geralmente criadas com Docker) e gerenciá-las no cluster.

Como a aplicação se comporta no container?

  • Isolamento: A aplicação dentro do container não sabe o que está acontecendo fora dele. Ela tem seu próprio ambiente, com as bibliotecas e versões que precisa, sem entrar em conflito com outras aplicações na mesma máquina.
  • Portabilidade: Como o container já tem tudo de que precisa, a aplicação se comporta de maneira idêntica em qualquer lugar, seja no Windows, Linux, na nuvem, etc.
  • Imutabilidade: Um container em execução não deve ser modificado. Se você precisa atualizar a aplicação, o correto é criar uma nova imagem de container com a atualização e substituir o container antigo pelo novo. O Kubernetes automatiza esse processo de substituição de forma segura, sem tirar sua aplicação do ar.

Pra complementar, vou deixar o artigo abaixo:

Um abraço e bons estudos.

Muito obrigado, e foi uma ótima resposta. Agora uma dúvida o kubernetes precisa de um sistema operacional para rodar ou posso botá-lo direto no hardware? Aguardo a resposta para encerrar a questão.

Oi, Estudante!

O Kubernetes precisa sim de um sistema operacional para rodar. Ele não pode ser instalado diretamente no hardware, porque não é um sistema operacional em si, e sim uma camada de orquestração que depende de um ambiente de sistema já configurado.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!