Pular para o conteúdo

Workloads

Intermediário22 min de leiturakubernetes

Pod é a unidade de agendamento: seus containers compartilham rede e ciclo de vida. Para serviço sem estado, use Deployment; para identidade estável e volume por réplica, use StatefulSet; para um Pod em cada nó, DaemonSet; para trabalho finito, Job ou CronJob. Não use Deployment para banco apenas porque é o controlador mais conhecido.

spec:
replicas: 3
template:
spec:
containers:
- name: api
image: registry.exemplo.com/api@sha256:SUBSTITUA
resources:
requests: { cpu: 100m, memory: 128Mi }
limits: { memory: 256Mi }
startupProbe: { httpGet: { path: /healthz, port: 8080 }, failureThreshold: 30, periodSeconds: 5 }
readinessProbe: { httpGet: { path: /readyz, port: 8080 } }
livenessProbe: { httpGet: { path: /healthz, port: 8080 } }

startupProbe dá tempo para a partida; enquanto ela falha, liveness/readiness não agem. Readiness remove um Pod do tráfego sem reiniciá-lo; liveness reinicia apenas processo realmente travado. Uma liveness que testa dependência externa cria cascata de reinícios. Requests definem reserva para o scheduler; limite de memória impede um container de consumir o nó e pode resultar em OOMKilled. Limite de CPU causa throttling, portanto meça a latência antes de definir um teto arbitrário.

O encerramento precisa respeitar tráfego em andamento: readiness deve ficar falsa, a aplicação tratar SIGTERM e o grace period caber no tempo de drenagem. Um PodDisruptionBudget limita quantos Pods voluntariamente indisponíveis o cluster aceita, mas não protege de queda simultânea de nó nem substitui réplicas distribuídas.

Próximo passo: exponha esse workload na trilha de Rede Kubernetes e use o roteiro de Diagnóstico quando o Pod não ficar Ready.