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