一个被杀死的Kubernetes pod中的jvm堆使用历史



我在kubernetes中部署了一个基于play框架的java应用程序。其中一个pod由于内存不足/内存泄漏而死亡。在本地,可以使用一些实用程序并监视jvm堆的使用情况。我是库伯内特的新手。

如果你告诉我如何在Kubernetes pod中检查我的应用程序的堆使用历史,我将不胜感激。kubectl在这个死pod上获取事件将提供事件历史记录,但我想检查那个死pod上的对象堆使用历史记录。非常感谢

您可以安装插件或外部工具,如Prometheus或metrics服务器。

Prometheus是一个开源系统监控和警报工具包,最初构建于SoundCloud。

您可以定义查询:对于CPU百分比

avg((sum (rate (container_cpu_usage_seconds_total {container_name!="" ,pod="<Pod name>" } [5m])) by (namespace , pod, container ) / on (container , pod , namespace) ((kube_pod_container_resource_limits_cpu_cores >0)*300))*100)

对于内存百分比

avg((avg (container_memory_working_set_bytes{pod="<pod name>"}) by (container_name , pod ))/ on (container_name , pod)(avg (container_spec_memory_limit_bytes>0 ) by (container_name, pod))*100)

看看:普罗米修斯吊舱的内存使用情况。

您可以使用Grafana可视化这些指标-看看如何使用Prometheus-Grafana-Prometheus设置。

度量服务器是Kubernetes内置自动缩放管道的容器资源度量的可扩展、高效来源。

Metrics Server从Kubelets收集资源度量,并通过Metrics API在Kubernetes apiserver中公开这些度量,供Horizontal Pod Autoscaler和Vertical Pod Autocaler使用。kubectl top还可以访问度量API,从而更容易地调试自动缩放管道。

您可以执行:

$ kubectl top pod <your-pod-name> --namespace=your-namespace --containers

下面的命令将为您提供给定pod及其容器的CPU使用率以及内存使用率。

查看如何首先安装metrics服务器:metrics服务器安装。

否则,如果你想在不安装任何第三方工具的情况下检查cpu/内存使用情况,那么你可以从cgroup获取pod的内存和cpu使用情况。

  1. 转到运行容器kubectl exec pod_name -- /bin/bash的外壳
  2. 转到cd /sys/fs/cgroup/cpu了解cpu使用情况运行cat cpuacct.usage
  3. 转到cd /sys/fs/cgroup/memory了解内存使用情况运行cat memory.usage_in_bytes

请记住,内存使用量是以字节为单位的。

看看:内存使用率kubernetes。

最新更新