k8s中,写日志引起pod cache增加问题

记一次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

你可能感兴趣的:(k8s中,写日志引起pod cache增加问题)