我已经为CronJob配置了带有资源请求和限制的YAML文件(apiVersion:batch / v1beta1),该pod已成功实例化,并且可以正常工作,但是当终止时,我将其标记为OOMKilled。
我的pod正在使用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。
答案 0 :(得分:1)
当容器指定了资源请求时,调度程序可以更好地决定将Pod放置在哪些节点上。但请记住:计算资源(CPU /内存)是为容器而不是容器配置的。
如果Pod容器被OOM杀死,则the Pod is not evicted。基础容器由kubelet
根据其容器RestartPolicy
重新启动。
您的OOMKill容器being terminated并不暗示该广告连播处于Completed/Error
状态(除非您使用的是RestartPolicy: Never
)。
如果在吊舱上执行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