K8s如何配置优雅停机?
应用部署在k8s中,需要设置pod的优雅停机时间(terminationGracePeriodSeconds),一般大于应用程序中spring.lifecycle.timeout-per-shutdown-phase设置的超时时间;设置之后服务更新或者重启时k8s会捕获到1号进程,在等待应用程序优雅关闭后,再杀死pod,从而减少对业务的影响。
配置优雅停机之后,一般有两种场景:
1)应用程序中没有正在进行的请求,在这种情况下,应用程序将会直接关闭,而无需等待宽限期结束后才关闭。
2)如果应用程序中有正在处理的请求,则应用程序将等待宽限期结束后才关闭。如果应用在宽限期之后仍然有待处理的请求,应用程序将抛出异常并继续强制关闭。