当Kubernetes 环境中的 pod 或容器超过分配给它们的内存量时,将触发退出代码 137 。通常,此退出代码伴随或简称为 OOMKilled。这里描述的killed是指这个错误的结果,它导致一个pod终止。

首字母缩略词 OOM 代表内存不足,这是由 pod 超出设置的内存限制引起的。如果您不确定 pod 终止的原因,最简单的找出方法之一是运行“kubectl get pods command”,然后会在特定 pod 上调用状态更新。然后,您会在其中找到 OOMKilled,它会提醒您退出代码 137 已被触发。

OOMKilled 从何而来?

虽然 OOMKilled 是您可能会在 Kubernetes 环境中看到的响应,但它实际上并不是该系统的原生响应。事实上,它是Linux 编程的一个核心特性
,已被转移到 Kubernetes 以帮助促进这个系统。在 Linux 内核中,OOMKilled 被称为 OOM Killer,提供与 Kubernetes 中相同的警告和响应。

通常,如果一个平台在某个系统上占用了过多的内存,Linux 将遍历不同的节点并决定杀死哪个节点,并使用 oom_score 对所有节点进行评分,以评估哪些节点占用了最多的内存。最少的内存。占用内存最多的节点最有可能被终止,退出代码 137 是为此给出的推理。

OOMKilled 的原因是什么?

如果您的 Kubernetes 生态系统返回 'exited with code 137
 ',那么您很可能在该系统中面临内存问题。虽然这可能是一个令人沮丧的问题,但这并不是世界末日,因为这是一个相当容易解决的问题。

通常,在 Kubernetes 环境中,OOMKilled 有几个核心原因:

  • 内存限制——在运行 Kubernetes 环境时,通常有数百个节点都在为共同利益而工作。虽然此系统有效,但内存限制可能会导致出现退出代码 137,这将终止您正在其中工作的 pod。造成这种情况的最常见原因之一是 pod 内的内存限制。在每个 Kubernetes pod 中,您可以指定对 pod 的内存限制。如果超过此值,您将收到 OOMKilled 错误。
  • 内存泄漏——如果一个容器有一定的内存限制,那么它有时会达到限制,然后开始泄漏到其他进程中。这将被标记为错误,然后终止。
  • Overcommitted Nodes –当 pod 使用的内存超过分配给它的内存时,您将收到此特定错误。

由于这是一个基于内存的错误,因此此退出代码的任何原因都与 Kubernetes 生态系统中的内存管理或使用不善有关。

如何修复退出代码 137?

如前所述,退出代码 137 是最容易修复的错误之一,因为它归结为减少进程或增加每个节点分配的内存量。

如果您尝试修复退出代码 137,请尝试以下三件事:

  • 增加磁盘空间——很简单,修复任何连接到内存的内存的最简单方法是增加 Kubernetes 环境必须使用的磁盘空间。这是一揽子解决方案,因为增加空间量将确保您的生态系统不再达到其最大值。但是,如果您一直遇到此问题,那么您应该尝试尝试以下两个修复程序,以确保您创建一个内存高效的系统。
  • 添加额外的 pod 卷——在 Kubernetes 的每个 pod 中,您可以设置某个 pod 允许使用的最小和最大内存量。如果一些 pod 一直收到退出代码 137 返回给它们,那么这表明您需要增加为 pod 提供的空间量。通过在压力最大的吊舱中手动增加最大限制,您将能够降低发生此问题的频率。
  • 减少并行运行器——并行处理是您一次运行两个系统以修复或维护不同功能的地方。虽然这提高了 Kubernetes 的效率和你可以用它实现的目标,但它也给整个生态系统的内存带来了更大的压力。通过减少并行运行频率
    ,您将能够保持系统的整体内存使用量较低,从而有助于减少您遇到的退出代码 137 的数量。

通过这三个步骤,您很可能会增加系统的内存量,并优化各个 pod 以确保它们有足够的内存来完成所有功能而不会意外终止。

最后的想法

如果您在 Kubernetes 中遇到退出代码 137,那么您的 Kubernetes 环境如何管理其 pod、节点和容器的空间可能存在问题。作为基准,Kubernetes 建议您为集群中的每个节点提供大约 300 MIB 的内存,这应该足以让节点正常运行。

但是,根据 Kubernetes 生态系统的复杂性,拥有尽可能多的内存总是一个更好的主意。如果您的系统有足够的空间,则指定更高的存储量以帮助每个节点运行,而无需出现退出代码 137。

开源帮助:什么是退出代码 137,你能修复它吗?相关推荐

  1. 小米8 SE和小米9 SE 开源 Android 9 Pie 内核代码

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   近日,小米在 GitHub 开源了小米8 SE和小米9 SE的内核源码(https://github.com/MiCode/Xiaomi_K ...

  2. 视觉SLAM开源算法ORB-SLAM3 原理与代码解析

    来源:深蓝学院,文稿整理者:何常鑫,审核&修改:刘国庆 本文总结于上交感知与导航研究所科研助理--刘国庆关于[视觉SLAM开源算法ORB-SLAM3 原理与代码解析]的公开课. ORB-SLA ...

  3. python 终止、结束、退出 代码

    python 终止.结束.退出 代码 import sysprint("执行代码") # 终止程序 sys.exit(0) # 0:正常退出 1:异常退出 print(" ...

  4. 如何在bash中等待多个子进程完成并在任何子进程以代码!= 0结尾时返回退出代码!= 0?

    如何在bash脚本中等待从该脚本派生的多个子进程完成并返回退出代码!= 0,当任何子进程以代码!= 0结尾时? 简单脚本: #!/bin/bash for i in `seq 0 9`; dodoCa ...

  5. linux添加怎么退出,linux – 是否可以设置’expect’的退出代码

    以下bash脚本不起作用,因为命令'expect'始终返回0,无论远程脚本/tmp/my.sh返回哪个退出代码. 任何让它成功的想法?谢谢. #!/usr/bash user=root passwd= ...

  6. Spring Boot退出代码–创建自定义退出代码

    当运行Spring Boot应用程序时,一切正常,我们将获得系统退出代码0 . 对于任何未处理的异常,应用程序将返回退出代码1 . 我们有可能从Spring Boot应用程序返回自定义退出代码. 在本 ...

  7. IDEA 惊天 bug:进程已结束,退出代码 1073741819

    来源 | 沉默王二 责编 | Carol 头图 | CSDN 下载自视觉中国 今天要写的文章中涉及到一串代码,关于 Undertow 的一个入门示例,贴出来大家看一下. public class Un ...

  8. android退出app代码,Android应用退出代码各种方式

    1. 点击按钮最小化app返回到home //并不会退出app,只是最小化 findViewById(R.id.button3).setOnClickListener(new OnClickListe ...

  9. 为应用程序池**提供服务的进程意外终止。进程ID是**。进程退出代码是'0x80'

    2010-8-26 11:39  事件类型: 警告  事件来源: W3SVC  事件种类: 无  事件 ID: 7034  日期: 2010-8-XX  事件: XX:XX:XX  用户: XX  计 ...

  10. Lc.exe已退出 代码为-1

    今天使用vs2008开发,有人在vss项目中增加了一个第三方组件,后来删除了,我的计算机上没有这个第三方组件,结果导致了LC.exe错误:"Lc.exe已退出 代码为-1 " 解决 ...

最新文章

  1. PyTorch 官方教程发布,限时免费开放!
  2. C#使用剪切板复制程序
  3. java安全编码指南之:敏感类的拷贝
  4. python paramiko sftp_Python学习—paramiko模块实现简单的ssh与sftp
  5. SCCM2012R2部署之四:配置客户端发现
  6. 【kafka】kafka 消费速度 小于 日志清理速度 (kafka数据被清理了)会发生什么 auto.offset.reset 参数
  7. 对称加密之AES算法的python实现
  8. 陈纪修 数学分析,上下册
  9. 星际2 BETA客户端背景音乐打包下载(附提取方法)
  10. 学习日记| javaScript在网页绘制国际象棋盘
  11. 财务系统服务器ebs系统,ebs系统(ebs财务系统是什么)
  12. 手机APP开发之MIT Appinventor详细实战教程(二),实现音乐软件的编程
  13. PHP学习总结(二)
  14. 如何区分前后端bug
  15. android 记录触屏坐标,android触摸屏坐标手工校准/调整成功
  16. spit()字符串分割
  17. 定时计数器c语言编程,定时计数器T0作定时应用技术(一)
  18. 【imx6ull-alientek-emmc】linux交叉编译环境 + 内核编译
  19. 谷歌黑客(google hacking)
  20. 行人检测数据库(样本)INRIA

热门文章

  1. Android加载服务器的静态图片文件
  2. ARM嵌入式——堆栈寻址
  3. redhat8.2-docker安装及部分镜像下载
  4. Unity3d开发“类三消”游戏
  5. java的duplicate用法_Java ByteBuffer duplicate()用法及代码示例
  6. M3U8视频AES解密播放
  7. php中html插入图片,html插入图片的示例代码详解(图)
  8. mysql插入数据不成功_mysql插入数据失败原因分析
  9. php如何用函数写表格,Excel表格公式怎么设置
  10. RestClient 访问elasticsearch