我在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使用情况。
- 转到运行容器
kubectl exec pod_name -- /bin/bash
的外壳 - 转到
cd /sys/fs/cgroup/cpu
了解cpu使用情况运行cat cpuacct.usage
- 转到
cd /sys/fs/cgroup/memory
了解内存使用情况运行cat memory.usage_in_bytes
请记住,内存使用量是以字节为单位的。
看看:内存使用率kubernetes。