K8s怎么排查Pod出现OOMKilled错误代码137

梦婷小哥_7136

梦婷小哥_7136

2026-10-02

764人浏览

原创

exit code 137表示进程被sigkill(信号9)强制终止,需结合kubectl describe pod中last state的reason字段判断根因:reason为oomkilled即容器内存超限;reason为error则多为liveness探针失败;reason为evicted则属节点内存压力驱逐。

k8s怎么排查pod出现oomkilled错误代码137

当Pod在Kubernetes中反复重启、日志突然中断、且kubectl get pod显示CrashLoopBackOff或OOMKilled状态时,Exit Code 137就是关键线索——它不是应用崩溃,而是Linux内核因内存超限直接终止了容器主进程。

确认是否真为OOMKilled

执行kubectl describe pod <pod-name> -n <namespace></namespace></pod-name>,重点检查Last State → Terminated字段:

若Reason: OOMKilled且Exit Code: 137同时出现,即可锁定为容器级内存超限;若Reason: Evicted或MemoryPressure,则是节点级驱逐,与137无关。

⚠️注意:Reason字段才是唯一判决依据,Exit Code 137本身只代表收到了SIGKILL信号,Liveness探针失败也会触发137,但Reason是Error而非OOMKilled。

查上一次容器的日志断点

运行kubectl logs -n <namespace><pod-name> --previous --tail=100</pod-name></namespace>。

OOMKilled的典型日志特征是:最后一行输出后戛然而止,无异常堆栈、无panic、无error字样;如果看到GC日志(如Full GC)、内存告警(如java.lang.OutOfMemoryError: Java heap space)或应用主动打印free memory: X MB后骤降,则高度指向内存泄漏或配置失衡。

这一步操作起来很简单,直接把命令敲进去就行。

比对内存使用与Limit的实际差距

① 查看当前Pod实时内存占用:kubectl top pod -n <namespace><pod-name></pod-name></namespace>;

② 查看Pod定义中的内存limit:kubectl get pod <pod-name> -n <namespace> -o jsonpath='{.spec.containers[*].resources.limits.memory}'</namespace></pod-name>;

Google翻译
Google翻译

Google翻译是一款AI翻译工具,Google免费提供的上百种语言智能翻译工具。

下载

③ 对比二者数值:若top结果持续逼近甚至等于limit(例如limit=200Mi,top显示195Mi),基本可判定为资源配额不足或应用内存增长失控;若top长期稳定在limit的60%以下却仍OOMKilled,则需排查JVM参数(如-Xmx未对齐limit)、sidecar内存争抢或cgroup v1/v2兼容性问题。

这一步必须做,否则所有后续优化都是盲调。

检查节点内存压力与历史OOM事件

方法一:用Prometheus查指标node_vmstat_oom_kill,该计数器每发生一次OOM Killer动作就+1,能定位到具体节点和时间点;

方法二:登录对应Node,执行dmesg -T | grep -i "killed process",输出中会明确列出被kill的进程名、PID、占用内存页数及触发时间,这是Linux内核留下的原始现场证据。

若发现多个不同Pod在同一节点频繁触发此日志,说明节点整体内存已严重过载,不是单个Pod的问题。

验证内存限制是否被正确继承

进入容器内部执行:cat /sys/fs/cgroup/memory/memory.limit_in_bytes。

该值应严格等于Pod YAML中设置的limits.memory(单位字节),例如limit设为200Mi,此处应显示209715200。若数值远大于预期,说明limit未生效——常见于使用了旧版Docker runtime、cgroup v1未启用memory子系统、或容器运行时配置绕过了Kubernetes资源限制。

【若此处数值异常,所有上层排查都将失效】

相关文章

错误代码修复工具(综合错误类型修复工具)
错误代码修复工具(综合错误类型修复工具)

综合错误类型修复工具是一款跨平台全能修复工具,主要解决各种错误代码因为运行时错误,未指定错误,应用程序错误等导致的系统奔溃,软件无法运行、安装、启动和使用等问题。有需要的小伙伴快来下载使用吧!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

20

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

0

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

0

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

20

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

20

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

220

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

140

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

120

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

60

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程