k8s中,写日志引起pod cache增加问题
2022-03-28 本文已影响0人
CaptainWhite
记一次k8s中内存泄露的问题
监控抓取的地址为cadvisor的地址,取的pod的mem分为rss、cached、used、total
- total:limit的数值
- rss:实际内存使用
- cached:缓存使用
- used:cached+rss
监控内存百分比会用used/total进行计算,所以内存不断上涨,误以为存在内存泄露
可以使用如下方式查看cadvisor的监控:
kubectl -n kube-admin get secrets k8s-mon-token-995sz -ojsonpath='{.data.token}' | base64 -d
TOKEN=$(kubectl -n kube-admin get secrets k8s-mon-token-995sz -ojsonpath='{.data.token}' | base64 -d)
curl -k --header "Authorization: Bearer $TOKEN" https://10.xxx.xxx.xxx:10250/metrics/cadvisor
通过压测得到:
k8s的limit限制,会计算rss+cache的值,写文件会导致cache不断增加,直到总量到达limit的限制值,此时cache会保持稳定。如果存在内存泄露,会导致rss不断增长,直到rss超过limit,会重启容器释放内存
我们内存告警rss的值即可,告警数值为limit的80% P2,limit的90% P1