При каждом деплое часть запросов к сервису обрывается
func main() {
srv := &http.Server{Addr: ":8080", Handler: router()}
log.Fatal(srv.ListenAndServe())
}
При раскатке новой версии Kubernetes отправляет старым подам SIGTERM, и клиенты получают обрывы соединения на запросах, которые как раз выполнялись. Что добавить?
- Ловить SIGTERM и вызывать srv.Shutdown с таймаутом
- Перехватывать SIGKILL вместо SIGTERM
- Вызывать os.Exit(0) при получении SIGTERM
- Увеличить число реплик вдвое
