K8s em Exemplos: Graceful Shutdown
| Graceful shutdown garante que requisições em andamento completem antes de um Pod terminar. Quando Kubernetes envia SIGTERM, apps devem parar de aceitar novas requisições, finalizar as existentes, e sair. O terminationGracePeriodSeconds define o prazo. Use para: deploys sem downtime, prevenir perda de dados, tratamento limpo de conexões. |
| graceful-shutdown-basic.yaml | |
| O | |
| prestop-hook.yaml | |
| Um hook preStop executa antes do SIGTERM ser enviado. Use para desregistrar do service discovery, drenar conexões, ou notificar load balancers. O sleep dá tempo para endpoints atualizarem antes do shutdown começar. | |
| O sleep no preStop resolve uma condição de corrida: terminação do Pod e remoção de endpoint acontecem concorrentemente. O sleep garante que kube-proxy atualize antes de sua app parar de aceitar conexões. | |
| shutdown-sequence.yaml | |
| Deployment completo com consciência de shutdown. A app trata SIGTERM parando novas conexões, esperando requisições em andamento, fechando conexões de banco, e saindo limpamente. Combinado com hook preStop e período de graça suficiente. | |
| connection-draining.yaml | |
| Para conexões de longa duração (WebSockets, gRPC streams), configure drenagem de conexões. A app rastreia conexões ativas e espera elas fecharem naturalmente ou dá timeout durante shutdown. | |
| job-graceful-shutdown.yaml | |
| Jobs e workloads batch também precisam de graceful shutdown. Se terminado no meio do processamento, o job deve fazer checkpoint do progresso ou marcar itens para retry. O activeDeadlineSeconds limita o tempo total de execução. | |
| terminal | |
| Monitore comportamento de shutdown nos eventos do Pod. Procure por execução do hook preStop, timing do SIGTERM, e se o container saiu limpamente ou foi morto após período de graça. | |