背景介绍

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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐