kubernetes 我的吊舱得到OOM-杀死状态,但不被杀死,为什么?为什么?

cyvaqqii  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(1)|浏览(126)

我已经用YAML文件配置了一个CronJob(apiVersion:batch/v1 beta1)的资源请求和限制,pod成功示例化并工作到自然结束,但当终止时,我看到它标记为OOMKilled。
我的pod正在使用Docker容器,该容器由调用一些Java工具(如maven)的bash脚本启动。我试着像这样设置一个MAVEN_OPTS和JAVAOPTS:

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

这些值低于YAML中配置的限制。
我希望pod在完成状态下停止,因为我的ENTRY_POINT bash脚本的最后一个echo显示在pod的日志中,但我得到了OOMKilled。

j13ufse2

j13ufse21#

当容器指定了资源请求时,调度器可以更好地决定将Pod放置在哪些节点上。但请记住:计算资源(CPU/内存)是为容器配置的,而不是为Pod配置的。
如果Pod容器被OOM杀死,Pod不会被驱逐。底层容器由kubelet基于其RestartPolicy重新启动。
您的容器被OOMKill终止并不意味着pod变为Completed/Error状态(除非您使用的是RestartPolicy: Never)。
如果您在pod上执行kubectl describe,容器将处于Running状态,但您可以在Last State中找到最后一次重启原因。你也可以检查它被重新启动了多少次:

State:          Running
  Started:      Wed, 27 Feb 2019 10:29:09 +0000
Last State:     Terminated
  Reason:       OOMKilled
  Exit Code:    137
  Started:      Wed, 27 Feb 2019 06:27:39 +0000
  Finished:     Wed, 27 Feb 2019 10:29:08 +0000
Restart Count:  5

相关问题