O que o Kubernetes faz
Rodar um container Docker em uma máquina, na mão, é fácil. Rodar cinquenta containers em dez máquinas — reiniciando cada um quando cai, movendo-os quando uma máquina morre, dividindo o tráfego entre eles, atualizando sem downtime — não é. O Kubernetes (abreviado como K8s) é o sistema que faz esse gerenciamento por você.
O Que é Kubernetes?
Kubernetes é uma plataforma de código aberto para orquestração de containers. Foi criada pelo Google em 2014, baseada em 15 anos de experiência gerenciando containers em larga escala, e agora é mantida pela Cloud Native Computing Foundation (CNCF).
Orquestração, concretamente: uma orquestra sinfônica precisa de um maestro para manter dezenas de músicos no tempo.
- Os músicos são seus containers, cada um sabe tocar seu instrumento
- O maestro é o Kubernetes, que coordena todos os músicos
- A partitura é a configuração que define como devem tocar juntos
Sem um maestro, cada músico tocaria por conta própria. Com Kubernetes, todos os containers trabalham em harmonia para fazer sua aplicação funcionar.
O Nome Kubernetes
O nome vem do grego κυβερνήτης (kybernetes), que significa “timoneiro” ou “piloto”. O logo com o leme de sete raios representa esse conceito. A abreviação K8s surge do fato de haver 8 letras entre o “K” e o “s”.
Por Que Você Precisa do Kubernetes?
Docker resolve o problema de criar e executar containers individuais. Mas em produção as coisas se complicam:
- O que acontece se um container falha às 3 da manhã?
- Como você distribui o tráfego entre 10 instâncias da mesma aplicação?
- Como você atualiza a aplicação sem tempo de inatividade?
- Como você gerencia 50 microsserviços que precisam se comunicar entre si?
Kubernetes responde a todas essas perguntas.
Docker vs Kubernetes: não são alternativas
Um mal-entendido comum é pensar que Kubernetes substitui o Docker. Na realidade, eles trabalham juntos:
| Ferramenta | Papel | Analogia |
|---|---|---|
| Docker | Cria e executa containers individuais | O músico que toca violino |
| Kubernetes | Orquestra e gerencia muitos containers | O maestro da orquestra |
Kubernetes pode usar Docker (ou outros runtimes como containerd) para executar os containers. Você não precisa escolher entre um ou outro: você usa ambos.
Para Que Serve Kubernetes: 6 Problemas que Resolve
1. Self-Healing: Containers que Se Reparam Sozinhos
Se um container falha, Kubernetes detecta e automaticamente inicia um novo. Ninguém precisa estar acordado às 3 da manhã para reiniciar serviços manualmente.
| |
2. Escalabilidade Automática
Tem um pico de tráfego? Kubernetes pode aumentar automaticamente o número de containers. O tráfego diminui? Ele os reduz para economizar recursos.
| |
3. Balanceamento de Carga Integrado
Kubernetes distribui automaticamente o tráfego entre todos os containers disponíveis. Se um container está sobrecarregado ou não responde, o tráfego é redirecionado para os outros.
4. Rolling Updates: Atualizações Sem Tempo de Inatividade
Quando você faz deploy de uma nova versão, Kubernetes:
- Inicia os novos containers com a versão atualizada
- Verifica que estão funcionando corretamente
- Gradualmente transfere o tráfego para os novos containers
- Encerra os containers antigos
Se algo der errado, pode fazer rollback automático para a versão anterior.
5. Service Discovery
Em um sistema com muitos microsserviços, como o serviço A encontra o serviço B? Kubernetes fornece um sistema DNS interno: cada serviço tem um nome e Kubernetes se encarrega de traduzi-lo para o endereço correto.
| |
6. Gerenciamento de Secrets e Configurações
Senhas, API keys, configurações: Kubernetes os gerencia de forma segura e os injeta nos containers sem hardcodá-los no código.
| |
Conceitos do Kubernetes: Pod, Node, Cluster, Deployment, Service
Pod
O Pod é a unidade básica do Kubernetes. Contém um ou mais containers que compartilham rede e armazenamento. Na maioria dos casos, um Pod contém um único container.
Node
Um Node é uma máquina (física ou virtual) que executa os Pods. Um cluster Kubernetes tipicamente tem vários Nodes para garantir alta disponibilidade.
Cluster
O Cluster é o conjunto de todos os Nodes gerenciados pelo Kubernetes. Inclui:
- Control Plane: o “cérebro” que toma decisões (onde colocar os Pods, quando escalá-los, etc.)
- Worker Nodes: as máquinas que realmente executam os containers
Deployment
Um Deployment descreve o estado desejado da sua aplicação: qual imagem usar, quantas réplicas, como atualizá-la. Kubernetes garante que o estado real corresponda sempre ao estado desejado.
Service
Um Service expõe os Pods à rede. Fornece um endereço IP estável e balanceamento de carga, mesmo quando os Pods subjacentes mudam.
| |
Kubernetes vs Docker Swarm
Docker tem seu próprio orquestrador integrado: Docker Swarm. Qual é a diferença?
| Característica | Kubernetes | Docker Swarm |
|---|---|---|
| Complexidade | Alta | Baixa |
| Curva de aprendizado | Íngreme | Suave |
| Funcionalidades | Muito ricas | Essenciais |
| Ecossistema | Enorme | Limitado |
| Escalabilidade | Muito poderosa | Boa |
| Adoção empresarial | Padrão de facto | Nicho |
| Configuração mínima | Complexa | Simples |
Quando escolher Docker Swarm:
- Projetos pequenos/médios
- Equipes com pouca experiência em orquestração
- Necessidade de começar rapidamente
Quando escolher Kubernetes:
- Projetos empresariais ou em crescimento
- Necessidade de funcionalidades avançadas
- Equipe disposta a investir em aprendizado
- Requisitos de escalabilidade importantes
Quando NÃO Usar Kubernetes
Kubernetes nem sempre é a resposta certa. Evite-o se:
- Você tem poucos containers: gerenciar 2-3 containers com K8s é como usar um caminhão para fazer compras
- A equipe é pequena: a complexidade operacional pode superar os benefícios
- A aplicação é monolítica: K8s brilha com microsserviços
- Você não tem requisitos de escalabilidade: se o tráfego é constante e previsível, você pode não precisar dele
- Orçamento limitado: clusters Kubernetes têm custos operacionais significativos
Alternativas Mais Simples
| Cenário | Alternativa ao Kubernetes |
|---|---|
| Poucos containers, um servidor | Docker Compose |
| Orquestração simples | Docker Swarm |
| Serverless | AWS Lambda, Azure Functions |
| PaaS gerenciado | Heroku, Railway, Render |
Em um único host, o Docker Compose cobre a maior parte do que as pessoas primeiro procuram no Kubernetes.
Como Começar com Kubernetes
Se você quer explorar Kubernetes sem enlouquecer, aqui está um caminho gradual:
1. Aprenda os Fundamentos do Docker
Se você ainda não fez isso, comece com Docker. Kubernetes orquestra containers, então você precisa primeiro saber criá-los.
2. Experimente Localmente com Minikube
Minikube cria um cluster Kubernetes no seu computador. Perfeito para aprender sem custos de cloud.
| |
3. Explore kubectl
kubectl é o comando para interagir com Kubernetes. Aprenda as operações básicas:
| |
4. Experimente um Cluster Gerenciado
Quando estiver pronto para produção, use um serviço gerenciado:
- Google Kubernetes Engine (GKE)
- Amazon Elastic Kubernetes Service (EKS)
- Azure Kubernetes Service (AKS)
Esses serviços gerenciam o Control Plane para você, reduzindo a complexidade operacional.
Você realmente precisa de Kubernetes?
O Kubernetes compensa a própria complexidade quando você roda muitos serviços, em mais de uma máquina, com uptime que importa. Self-healing, autoscaling e rolling updates são difíceis de construir sozinho, e o Kubernetes entrega tudo isso pronto.
Abaixo dessa linha, ele custa mais do que devolve. Um punhado de containers em um servidor roda bem no Docker Compose. Um cluster pequeno, com necessidades modestas, roda bem no Docker Swarm. Recorra ao Kubernetes quando esses pararem de dar conta, não antes.
Para aprender sem pagar por um cluster de produção, comece com o Minikube na sua própria máquina e percorra os conceitos acima um de cada vez.