Kubernetes do Zero: Parte 1 - Introdução e Conceitos Fundamentais
Primeiro post da série sobre Kubernetes. Aprenda os conceitos fundamentais, arquitetura e por que Kubernetes é essencial para containers em produção.
Este artigo também está disponível em inglês
Série: Kubernetes do Zero
Parte 1 de 2
Bem-vindo à Série Kubernetes do Zero!
Esta é a Parte 1 de uma série completa sobre Kubernetes. Vamos do básico ao avançado, construindo conhecimento de forma progressiva.
O que é Kubernetes?
Kubernetes (K8s) é uma plataforma de orquestração de containers open-source que automatiza deployment, scaling e gerenciamento de aplicações containerizadas.
Por que Kubernetes?
Imagine que você tem 100 containers rodando em produção:
- Como você faz deploy de novas versões?
- Como você escala quando o tráfego aumenta?
- O que acontece quando um container falha?
- Como você gerencia networking entre containers?
Kubernetes resolve tudo isso e muito mais!
Arquitetura do Kubernetes
Control Plane (Plano de Controle)
O “cérebro” do cluster Kubernetes:
┌─────────────────────────────────┐
│ Control Plane │
│ ┌───────────┐ ┌──────────┐ │
│ │ API Server│ │ Scheduler│ │
│ └───────────┘ └──────────┘ │
│ ┌────────────┐ ┌───────────┐ │
│ │ Controller │ │ etcd │ │
│ │ Manager │ │ (Storage) │ │
│ └────────────┘ └───────────┘ │
└─────────────────────────────────┘
Componentes:
- API Server: Ponto de entrada para todas as operações
- Scheduler: Decide em qual node rodar os pods
- Controller Manager: Mantém o estado desejado do cluster
- etcd: Armazena toda a configuração e estado do cluster
Worker Nodes
Onde os containers realmente rodam:
┌──────────────────────────────┐
│ Worker Node │
│ ┌──────────────────────┐ │
│ │ Kubelet │ │
│ │ (Node Agent) │ │
│ └──────────────────────┘ │
│ ┌──────────────────────┐ │
│ │ Kube-proxy │ │
│ │ (Networking) │ │
│ └──────────────────────┘ │
│ ┌──────────────────────┐ │
│ │ Container Runtime │ │
│ │ (Docker/containerd)│ │
│ └──────────────────────┘ │
│ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │ Pod │ │ Pod │ │ Pod │ │
│ └─────┘ └─────┘ └─────┘ │
└──────────────────────────────┘
Conceitos Fundamentais
1. Pod
A menor unidade deployável no Kubernetes. Um pod pode conter um ou mais containers.
apiVersion: v1
kind: Pod
metadata:
name: meu-app
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Características:
- Containers no mesmo pod compartilham network e storage
- Pods são efêmeros (podem ser criados e destruídos)
- Cada pod tem seu próprio IP
2. Deployment
Gerencia pods de forma declarativa. Define quantas réplicas você quer e o K8s garante que estejam rodando.
apiVersion: apps/v1
kind: Deployment
metadata:
name: meu-app
spec:
replicas: 3
selector:
matchLabels:
app: meu-app
template:
metadata:
labels:
app: meu-app
spec:
containers:
- name: nginx
image: nginx:latest
3. Service
Expõe seus pods para o mundo exterior ou internamente no cluster.
apiVersion: v1
kind: Service
metadata:
name: meu-app-service
spec:
selector:
app: meu-app
ports:
- port: 80
targetPort: 80
type: LoadBalancer
Por que Você Deveria Aprender Kubernetes?
1. Padrão da Indústria
- Usado por Google, Netflix, Spotify, Uber
- Adotado por quase todas as empresas cloud-native
2. Portabilidade
- Roda em qualquer lugar: AWS, GCP, Azure, on-premise
- Evita vendor lock-in
3. Escalabilidade
- Escala horizontal automaticamente
- Lida com milhões de requisições
4. Self-Healing
- Reinicia containers que falham
- Substitui nodes problemáticos
- Redistribui carga automaticamente
5. Alta Demanda no Mercado
- Salários acima da média
- Crescimento de 200%+ na demanda
Casos de Uso Reais
Spotify
- Desafio: Rodar 1000+ microservices
- Solução: Kubernetes para orquestração
- Resultado: Deploy 10x mais rápido
The New York Times
- Desafio: Migrar de datacenter legado para cloud
- Solução: Containerização com Kubernetes
- Resultado: Redução de 60% nos custos
Pokemon GO
- Desafio: Escalar de 0 para 500M+ usuários
- Solução: Google Kubernetes Engine
- Resultado: Escalou 50x em poucos dias
Próximos Passos
Na Parte 2 desta série, vamos:
- Instalar Kubernetes localmente (Minikube)
- Fazer nosso primeiro deploy
- Explorar comandos kubectl essenciais
- Criar nosso primeiro pod
Conceitos Importantes para Próxima Parte
Certifique-se de entender:
- ✅ O que é um Pod
- ✅ Diferença entre Deployment e Pod
- ✅ O que é um Service
- ✅ Arquitetura básica (Control Plane + Nodes)
Recursos Adicionais
🎯 Na próxima parte: Vamos colocar a mão na massa e fazer nosso primeiro deploy no Kubernetes!
Vejo você na Parte 2! 🚀