这个容器在我的笔记本电脑上的Docker上正常运行,但在java.lang.OutOfMemoryError崩溃时:在Kubernetes中运行时的Java堆空间。为什么呢?
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mem-eater
spec:
template:
metadata:
labels:
# Refer to this name when defining a service.
app: mem-eater
spec:
containers:
# This is the docker image on your docker registry. This one is on
# the official Docker registry.
- image: neilhwatson/memory-eater:prod
name: mem-eater
尝试设置资源限制和请求,以及JVM Xmx限制,但在所有情况下崩溃都完全相同。
其他信息:
答案 0 :(得分:2)
我有完全相反的情况,与
崩溃docker run -it neilhwatson/memory-eater:prod
在Kubernetes中运行正常,没有重启(但是在511次迭代后停止记录)。
(抱歉没有评论,我没有足够的代表)。
答案 1 :(得分:2)
您是否尝试过-XX:+UseCGroupMemoryLimitForHeap
选项?它告诉JVM使用cgroup提供的限制来确定堆大小(和其他资源限制),而不是系统范围的限制。
Christine Flood写了一篇关于在容器上使用Java时非常有用的一些标志的精彩文章:https://developers.redhat.com/blog/2017/04/04/openjdk-and-containers/