记录一次k8s的oom问题定位

博客讲述了在项目上线后遇到的服务偶现调用接口报错问题,通过查看Kubernetes pod日志和node节点日志,发现是由于程序占用内存超出限制导致OOM,从而触发了pod的重启。解决方案是调整limit.memory值或减小项目的XMX设置。
摘要由CSDN通过智能技术生成
背景介绍

在一次项目上线之后,发现环境偶现调用接口报错的情况,排查发现是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,果然超过了,把值调小解决了这个问题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值