kubernetes Kubernates作业执行期间内存不足

wmomyfyw  于 2022-12-26  发布在  Kubernetes
关注(0)|答案(1)|浏览(443)

我在kubernates pod中有以下资源限制。当我的映像以jvm参数开始时。我们添加了小于最小/最大堆的资源限制。java进程开始运行一段时间,pod突然因内存不足而被杀死。
如果资源限制中指定的内存是3倍的值,pod如何启动?有人能帮上忙吗?

cmd: 
java -Xmx1512m -Xms1512m $LOGARGS -jar test-ms.jar

Pod资源限制:

resources:
  limits:
    cpu: 300m
    memory: 500Mi
  requests:
    cpu: 150m
    memory: 300Mi

/start.sh: line 19:     7 Killed                  java -Xmx1512m -Xms1512m $LOGARGS -jar test-ms.jar
lx0bsm1f

lx0bsm1f1#

在500Mi你的但是被驱逐。如果Java需要1500,这不能工作。在限制部分提高内存值,玩这个值。你的容器不仅仅需要Java的内存。
更新您的评论:
意味着当集装箱达到500米(500 MiB = 524.288 MB)pod已重新启动。为避免pod使用过多内存(例如10GB),因为发生了一些不相关的事情。例如内存泄漏。您限制内存,以便其他Pod也可以在节点上运行。您必须了解容器内内存的正常情况。当你为java设置内存需求时,你可以检查你是否真的需要它们,如果你的集群像prometheus一样安装了度量。
https://github.com/kubernetes-sigs/metrics-server
您可以安装:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml

然后分析CPU和内存:

kubectl top node // shows values for the nodes

kubectl top pod // shows values for the pods

如果你想使用它,请参考文档,当你的容器运行时,你也可以进入并执行普通的top linux命令。

相关问题