美文网首页
k8s服务优雅退出

k8s服务优雅退出

作者: 怀旧的艾克 | 来源:发表于2019-08-21 19:48 被阅读0次

1 检查当前预估服务支持优雅退出

部署预估服务,rollingUpdate,使用Jmeter一直发压力请求

发现会有很多失败的请求

确认当前预估服务不支持优雅退出

2 检查预估服务的框架是否支持优雅退出

当前light4j的版本是1.5.14

发现light4j从1.5.15开始支持graceful shutdown

https://github.com/networknt/light-4j/blob/master/server/src/main/java/com/networknt/server/Server.java

3 更新版本为1.5.15

启动预估服务后,直接给java程序发SIGTERM信号,kill -SIGTERM JAVAPID,发现java程序能够优雅退出

但是通过RollingUpdate,发现java程序没有优雅退出

4 k8s优雅退出步骤

4.0 删除POD

4.1 POD进入Terminating状态

4.2 与此同时,k8s会将POD从对应的service删除

4.3 与此同时,有preStop hook的容器,会先执行preStop hook, 如果preStop hook的时间超出了Grace period,kubelet会发送SIGTERM

4.4 与此同时,没有preStop hook的容器,kubelet发送SIGTERM信号给启动进程

5 Bash Trap 信号

由于预估服务的镜像是通过bash script启动,而不是直接在Dockerfile里面执行java程序,由上面的知识可知,POD删除的时候,kubelet会发送SIGTERM信号给Bash Script进程。

现在会有一个问题,bash是不能传递信号的

所以需要在bash脚本里面捕获信号,并给java程序发SIGTERM信号

6 Lifecycle preStop

通过Bash Trap信号传递给JAVA进程后,发现RollingUpdate操作还是会有失败的请求,压测qps 500的时候,会有20个请求失败,表现为503, connect refuse

分析:

请求持续不断的过来,这个时候进程收到了SIGTERM信号后开始处理没有完成的请求,但是在切流量的过程中,就是kubelet发送SIGTERM信号和把POD从service拿掉的过程中,有一点请求漏过来了

所以需要确保切流量之后,进程收到SIGTERM之前,不要有流量进来。

加上lifecycle preStop

再次测试,RollingUpdate几次,发现没有失败的请求了

相关文章

  • k8s服务优雅退出

    1 检查当前预估服务支持优雅退出 部署预估服务,rollingUpdate,使用Jmeter一直发压力请求 发现会...

  • docker 优雅退出

    本文主要阐述如何让 docker 容器优雅的终止。 优雅退出定义 所谓优雅退出,指的是程序在退出之前,有清理资源、...

  • Pod内进程访问k8s服务

    Pod内进程访问k8s服务 外部服务可以通过kubeconfig访问k8s服务,那k8s集群内部服务(Pos内服务...

  • Kubernetes之服务优雅升级

    前言 k8s本身就支持服务滚动升级,但是如果程序没有正确的处理退出信号时,就会导致部分请求直接被中断从而影响用户体...

  • 转载:golang 后台服务设计精要

    转载:golang 后台服务设计精要 文章目录 守护进程 优雅的结束进程 响应信号 等待所有协程退出 gorout...

  • JVM优雅退出

    背景 在某个Java应用增加新功能,缩容机器,或者应用以及机器发生异常,通常会停止正在运行的应用,该应用通常正在运...

  • SpringBoot 优雅退出

    欢迎转载,但请在开头或结尾注明原文出处【blog.chaosjohn.com】[https://blog.chao...

  • Nodejs 优雅退出

    前言 我们在Nodejs业务逻辑复杂的时候,很难做到完全没有内存泄漏,和出现uncaughtException的异...

  • Java 优雅退出

    前言 先思考几个问题 Java 服务为什么会挂掉? 什么情况 Java 进程会挂掉? Java 进程挂掉如何做优雅...

  • prometheus-operator 之监测外部机器,自定义监

    1.1.1.5 内网服务器 k8s master1.1.1.6 内网服务器 k8s node1.1.1.7 内网服...

网友评论

      本文标题:k8s服务优雅退出

      本文链接:https://www.haomeiwen.com/subject/eazisctx.html