记录一次k8s的oom问题定位
记录一次k8s的oom问题定位
·
背景介绍
在一次项目上线之后,发现环境偶现调用接口报错的情况,排查发现是k8s服务偶尔重启导致过程中服务不可用,这样开始了本次问题的定位
步骤一
查看pod的日志信息
# -n 命名空间
# po -l 根据label参数过滤
kubectl describe -n cdp po -l app=cdp-version
pod日志信息如下:
第二个框是重启的原因,oom导致被kill掉
第三个框是参数的设置,先记录一下
步骤二
去对应的node节点查看日志信息,从上图中可以看到oom的时间点,大概是在11月10号的9:28:04之前,并且可以看到对应的node名称是devops-2节点
切换节点
kubectl describe nodes devops-2
查看devops-2节点的日志信息
那么我们就去查看devops-2节点在11月10号的9:27:30之后的日志
journalctl --since="2022-11-10 09:27:30"
日志信息如下,可以看到是程序占用完了所有可用的内存信息,还记得上个图片展示的内存限制吗(limit-memory-2g),去搜索了一下containers.spec的这个参数的意义,解释如下:如果程序内存超过pod的设置阈值,会触发oom去kill pod里面的容器
这就是服务重启的原因,那么到这原因就基本找到了,调大limit,memory值或者调小项目的xmx,查看了一下xmx的设置是2048m,果然超过了,把值调小解决了这个问题
更多推荐
已为社区贡献2条内容
所有评论(0)