Drain é um procedimento operacional usado ao parar ou retirar um servidor ou worker. Ele deixa de aceitar trabalho novo e permite que apenas o processamento já em andamento termine.
Em um servidor HTTP, drain significa bloquear a entrada de novos requests e depois aguardar conexões existentes ou in-flight requests. Em Kubernetes, o termo aparece com frequência no fluxo em que readiness é derrubado para tirar a instância dos endpoints antes de seguir para o graceful shutdown.
Casos de uso comuns
- Logo antes de reiniciar um servidor ou fazer rolling update
- Antes de parar um queue worker
- Ao remover um nó atrás de um load balancer
Observações
Drain não é uma parada imediata. É uma etapa para sair sem bagunçar o trabalho já em execução. O objetivo é diferente de um encerramento forçado.
hsb.horse