最近,部署中包含多个pod 的同一容器在OOMKilled事件后重新启动.

State:          Running
      Started:      Tue, 15 Feb 2022 23:33:06 +0000
    Last State:     Terminated
      Reason:       OOMKilled
      Exit Code:    1
      Started:      Fri, 11 Feb 2022 17:48:21 +0000
      Finished:     Tue, 15 Feb 2022 23:33:05 +0000
    Ready:          True
    Restart Count:  1
    Limits:
      cpu:     1
      memory:  512Mi
    Requests:
      cpu:      1
      memory:   512Mi

如果容器超过可用内存的限制,那么它将以代码137退出.我猜容器没有达到极限.所以我的问题是,如果退出代码是1,原因是OOMKilled,会发生什么.

Update:

ret = subprocess.run(args, stderr=subprocess.PIPE, universal_newlines=True, check=False)
if ret.returncode != 0:
    logging.warning("Executing cmd failed: %s, code: %d, stderr: %s", cmd, ret.returncode, ret.stderr)
    raise Exception("Failed")

调用相关日志(log)时,返回-9:

2022-02-15T23:33:30.510Z WARNING "MainThread - Executing cmd failed: iptables-restore -n -w 3 restore-filter, code: -9, stderr: "
raise Exception("Failed")
Exception: Failed

从子流程的描述中.run():A negative value -N indicates that the child was terminated by signal N (POSIX only).

那么,因为引发了异常,python代码以1退出?可能

推荐答案

两个可能的原因:

Reason #1

子进程被OOM killer杀死(它从OOM killer接收到SIGKILL(9),导致应用程序崩溃,原因为exit code 1,终止原因为OOMKilled.

Reason #2

如果指定了initContainers,初始化容器可能已被OOM killer杀死,导致OOMKilled个原因,应用程序因初始化错误而崩溃,exit code 1个原因.


库伯内特斯的文件中没有很好的记录.例如

只有当init pid被内核OOM killer杀死时,容器才会被标记为OOM killed.有些应用程序可以容忍非初始化进程的OOM终止,因此我们 Select 不跟踪非初始化进程OOM终止.

除了这个GitHub问题,我在任何地方都找不到任何关于它的提及.


First reason is more probable in my opinion.
Possible solution is to increase memory limits (if you have any).

Python相关问答推荐

如何使用Python中的clinicalTrials.gov API获取完整结果?

如何让我的Tkinter应用程序适合整个窗口,无论大小如何?

如何从FDaGrid实例中删除某些函数?

使用plotnine和Python构建地块

运行回文查找器代码时发生错误:[类型错误:builtin_index_or_system对象不可订阅]

Django mysql图标不适用于小 case

try 在树叶 map 上应用覆盖磁贴

将数据框架与导入的Excel文件一起使用

使可滚动框架在tkinter环境中看起来自然

如何在类和classy-fastapi -fastapi- followup中使用FastAPI创建路由

DataFrames与NaN的条件乘法

在Python argparse包中添加formatter_class MetavarTypeHelpFormatter时, - help不再工作""""

多处理队列在与Forking http.server一起使用时随机跳过项目

python中的解释会在后台调用函数吗?

什么是合并两个embrame的最佳方法,其中一个有日期范围,另一个有日期没有任何共享列?

为什么numpy. vectorize调用vectorized函数的次数比vector中的元素要多?

Python Tkinter为特定样式调整所有ttkbootstrap或ttk Button填充的大小,适用于所有主题

合并与拼接并举

使用Python TCP套接字发送整数并使用C#接收—接收正确数据时出错

简单 torch 模型测试:ModuleNotFoundError:没有名为';Ultralytics.yolo';