当前位置:首页 > 内存 > 正文

pod内存不下降(k8s pod内存不释放)

  • 内存
  • 2024-09-03 20:15:08
  • 2937

一、k8s中,写日志引起podcache增加问题考虑k8s中的内存泄漏问题。
监控捕获到的地址是Cadvisor的地址,捕获到的pod内存分为RSS、cached、used和total。
已检索通过压力测试:k8s的限制计算RSS+Cache的值。写文件会导致缓存不断增加,直到总量达到限制的上限,并会保持稳定。当发生内存泄漏时,RSS会不断增长,直到RSS超过限制,容器会重新启动以释放内存
我们的内存警报RSS值即可,警报值为限制的80%P2和90%P1极限值


二、通过Prometheus查询计算Kubernetes集群中Pod的CPU、内存使用率等指标Kubernetes的kubelet组件内置了一个cadvisor,它以Prometheus支持的格式显示Node上的容器指针,通过计算这些指针可以获得更多有用的数据。
在Prometheus配置文件中,配置相关Target后,就可以从Prometheus中查询到这个指针了。
通过直接访问Kubeletfireserver接口,可以读取Prometheus支持的格式呈现的指标:
CPU使用率的定义可以从mantop手册中找到:
即进程占用的CPU时间与过去一段时间CPU总时间的比值,如果有多个CPU或多核,则需要加上每个CPU的时间。
有关kubelet中cadvisor收集的提示和含义,请参阅:MonitoringcAdvisorwithPrometheus。
其中一些是:
container_cpu_usage_seconds_total是容器使用的累积CPU时间。将其除以总CPU时间即可得到之前的CPU使用率。
Pod在1秒内累计使用的CPU时间为:
container_spec_cpu_quota为容器的CPU配额,其值为:为容器指定的CPU数量*100000。
因此,以1s为单位的PodCPU总时间为:PodCPU核数*1s:
将上述两个公式的结果相除,即可得到容器的CPU使用率。:
计算Pod内存使用量更简单,只需将实际内存使用量除以内存限制使用量即可。