Kubernetes中基于资源利用的活动检查

时间:2019-01-04 04:05:39

标签: kubernetes

在Kubernetes中,我们有一个活动探测器,该探测器会定期检查容器是否可访问,否则杀死并产生一个新容器。

我们有一个Java Webapp,在大多数情况下,我发现该应用程序由于内存压力而变得不可用。我们有一个活动探针,但是由于运行状况检查服务调用不会占用太多内存,因此即使许多其​​他需要更多内存的请求仍然存在,该调用也会成功。

GC继续连续运行以回收内存,但无济于事。该实例永不恢复。在这种状态下,我希望Kubernetes杀死Pod,但是鉴于活动性探测仍然成功,所以不会成功。解决此问题的一种方法可能是使活动性探针的资源消耗更多,但是这样会消耗更多的周期,并给系统带来额外的负载。

因此,我想进行某种活动检查,该检查可以监视Java进程的垃圾回收计数图的斜率。另一种说法是,我希望我的活动探针依赖遥测数据。有什么方法可以实现?

1 个答案:

答案 0 :(得分:0)

运行状况探测器通常以HTTP请求的形式使用,该请求检查HTTP端点返回的状态代码。但是,您也可以执行脚本作为运行状况检查和kubernetes documentation provides an example which does a cat on a file。您可以运行自定义脚本命令来检查所需的统计信息(例如java heap size),而不是在文件上惹恼猫。如果脚本很复杂,则可能需要将该脚本包含在映像中,或者将其从configmap安装到容器中。除了运行bash命令外,还有其他获取指标的方法,您可以转到k8s metrics API。或者,您可以让您的Java应用程序直接与您可以调用的其余端点进行报告(例如,诸如Spring Boot执行器之类的东西)。