Pular para o conteúdo

Arquitetura de software · Escala e desempenho · 7 min de leitura

Containers e Kubernetes: o que são e quando valem a pena

Containers empacotam a aplicação com suas dependências; o Kubernetes decide onde rodá-los, reinicia o que cai e escala conforme a carga.

ClusterVocê → Plano de controle: estado desejadoPlano de controle → PodPlano de controle → PodUsuários → Service / IngressService / Ingress → PodService / Ingress → PodVocê — kubectl / CIVocêkubectl / CIUsuáriosUsuáriosPlano de controle — API, agendador, etcdPlano de controleAPI, agendador, etcdService / Ingress — IP estávelService / IngressIP estávelPod — nó 1Podnó 1Pod — nó 2Podnó 2Pod — nó 2Podnó 2

Arraste para o lado para ver o diagrama inteiro.

Você declara o estado desejado (3 réplicas); os controladores trabalham continuamente para que o real fique igual a ele.

Containers

Um container é um processo isolado que carrega a aplicação e tudo de que ela precisa (bibliotecas, runtime) numa imagem imutável. Roda igual no notebook, no CI e em produção. É mais leve que uma máquina virtual porque compartilha o kernel do sistema.

Kubernetes em uma página

  • Pod: a menor unidade — um ou mais containers juntos.
  • Deployment: quantas réplicas e qual versão; faz atualizações graduais e rollback.
  • Service / Ingress: um endereço estável que distribui o tráfego entre os pods.
  • ConfigMap / Secret: configuração e segredos fora da imagem.
  • Autoescala: mais pods com mais CPU ou fila; mais nós quando faltam recursos.

Tudo é declarativo: você descreve o estado desejado e os controladores corrigem as diferenças (reconciliação).

Quando não usar

Kubernetes tem custo de operação real: rede, armazenamento, segurança, atualizações do cluster. Para um app pequeno, um serviço gerenciado de containers (ou uma plataforma como serviço) entrega deploy, escala e HTTPS sem administrar o cluster. Ele brilha com muitos serviços, equipes e necessidade de portabilidade entre nuvens.

Em resumo

Vantagens e custos

Vantagens
  • Auto-recuperação e escala
  • Deploys graduais e rollback
  • Portável entre nuvens
Custos e riscos
  • Curva de aprendizado alta
  • Custo operacional
  • Exagero para poucos serviços

Referências

Continue aprendendo

Todos os temas de arquitetura de software →