EKS & Kubernetes na AWS
Objetos do Kubernetes, IRSA, capacity (Managed Nodes vs Fargate), Karpenter e probes corretos
EKS e Kubernetes managed β voce ainda escreve YAML, mas a AWS opera o control plane. Diferenca custa: ~$73/mes por cluster, networking via VPC CNI, autenticacao por IAM, IRSA para credenciais granulares.
Objetos essenciais β refresher
| Objeto | O que faz | Quando usar |
|---|---|---|
Deployment | Mantem N replicas de um Pod com rolling update | Stateless apps (APIs, workers) |
StatefulSet | Pods com identidade estavel + volume persistente | Bancos, brokers (Kafka), Redis cluster |
Service | Endpoint estavel + load balance entre Pods | Sempre β Pod IPs sao efemeros |
Ingress | HTTP routing externo β host/path β Service | Expor APIs HTTP/HTTPS |
ConfigMap | Configuracao nao-secreta (env vars, files) | Feature flags, URLs, settings |
Secret | Dados sensiveis (base64, encrypted at rest) | Connection strings, tokens β prefira IRSA |
HorizontalPodAutoscaler | Escala replicas por metric (CPU, memory, custom) | Scaling reativo de Deployments |
PodDisruptionBudget | Garante minAvailable durante drain | Production β evita rolling kills agressivos |
Pod lifecycle β o que voce precisa saber
Quando o scheduler decide colocar um Pod num node, o ciclo e: Pending β pull image β ContainerCreating β init containers β main containers β Running. Falhas comuns: ImagePullBackOff (ECR sem permissao ou tag errada), CrashLoopBackOff (app crasha na boot), Pending (sem capacity ou node selector errado).
Qual a diferenca entre Deployment e StatefulSet?
Deployment trata Pods como gado: nomes aleatorios, rolling update paralelo, qualquer Pod pode receber o trafego. StatefulSet da identidade estavel β db-0, db-1, db-2 β e bota up/down em ordem (one at a time), com um PersistentVolumeClaim por Pod. Use Deployment quando o servico e stateless e qualquer instancia serve qualquer request. Use StatefulSet quando ha estado persistente vinculado a uma identidade (replica de banco, broker, lider de cluster).