我的吊舱已被OOM杀死,但没有被杀死。为什么?

问题描述 投票:0回答:1

我已经为CronJob配置了带有资源请求和限制的YAML文件(apiVersion:batch / v1beta1),该pod已成功实例化,并且可以正常工作,但是当终止时,我将其标记为OOMKilled。

我的吊舱正在使用Docker容器,该容器以bash脚本启动,该bash脚本调用了一些Java工具(例如maven)。我试图像这样设置一个MAVEN_OPTS和JAVAOPTS:

        env:
          - name: JAVA_OPTS
            value: "-Xms256M -Xmx1280M"
          - name: MAVEN_OPTS
            value: "-Xms256M -Xmx1280M"

这些值低于YAML中配置的限制的值。

我期望pod停止在完整状态,因为ENTRY_POINT bash脚本的最后回显显示在pod的日志中,但我收到了OOMKilled。

kubernetes yaml containers
1个回答
1
投票
[当容器指定了资源请求时,调度程序可以更好地决定要在哪些节点上放置Pod。但请记住:计算资源(CPU /内存)是为容器而不是容器配置的。

如果Pod容器被OOM杀死,则the Pod is not evicted。基础容器由kubelet根据其RestartPolicy重新启动。

OOMKill的您的容器RestartPolicy并不暗示吊舱处于being terminated状态(除非您正在使用Completed/Error)。

如果在吊舱上执行RestartPolicy: Never,则容器将处于kubectl describe状态,但是您可以在Running中找到上一次重启的原因。另外,您可以检查它重新启动了多少次:

Last State

© www.soinside.com 2019 - 2024. All rights reserved.