开发者社区> 问答> 正文

基于资源利用的Kubernetes活跃度检查

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

我们有一个Java webapp,在大多数情况下,我看到应用程序由于内存压力而变得不可用。我们有一个活跃的探测器,但由于运行状况检查服务调用不占用太多内存,即使需要更多内存的许多其他请求仍然存在,它也会成功。

GC继续运行以回收内存,但无济于事。实例永远不会恢复。在这种状态下,我希望Kubernetes杀死pod,但鉴于liveness探测仍然成功,它没有。处理这种情况的一种方法可能是使活动探测更加资源密集型操作,但是,它会消耗更多周期并在系统上增加额外负载。

因此,我希望能够进行某种活动检查,以监视Java进程的垃圾收集计数图的斜率。说明相同的另一种方式是我希望我的活力探测依赖于遥测数据。有没有办法实现这一目标?

展开
收起
k8s小能手 2019-01-09 14:29:18 1788 0
1 条回答
写回答
取消 提交回答
  • 整合最优质的专家资源和技术资料,问答解疑

    运行状况探测通常以HTTP请求的形式使用,以检查HTTP端点返回的状态代码。但是,您也可以执行脚本作为运行状况检查,kubernetes文档提供了一个在文件上执行cat的示例。您可以运行自定义脚本命令来检查所需的统计信息(例如Java堆大小),而不是在文件上执行cat 。如果脚本很复杂,您可能希望在映像中包含该脚本,或者从configmap将其挂载到容器中。除了运行bash命令之外,还有其他方法可以获取指标,因为您可以转到k8s 指标API。或者您可以让您的Java应用程序直接报告您可以调用的休息端点(例如弹簧启动器执行器)。

    2019-07-17 23:25:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
ACK 云原生弹性方案—云原生时代的加速器 立即下载
ACK集群类型选择最佳实践 立即下载
企业运维之云原生和Kubernetes 实战 立即下载

相关镜像