我在kuberates pod中有低于资源限制的资源。我的图像从JVM参数开始。我们增加了小于最小/最大堆的资源限制。java进程开始运行一段时间,pod突然因为内存不足而被杀死。
如果在资源限制中指定的内存是3倍的值,pod如何启动?有谁能帮帮忙吗?
cmd:
java -Xmx1512m -Xms1512m $LOGARGS -jar test-ms.jar
荚resourcelimits:
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
在500Mi时,您的but被驱逐。如果Java需要1500,这是行不通的。提高内存值在限制部分,玩的值。你的容器不仅需要Java的内存。
更新你的评论:
表示当容器到达500Mi (500 MiB = 524.288 MB)时,重启pod。为了避免pod使用太多内存(例如10GB),因为某些方面发生了。例如Memoryleaks。您可以限制内存,以便其他pod也可以在节点上运行。您必须了解容器内内存的正常情况。当您为java设置内存需求时,您可以检查是否真的需要它们。如果您的集群像普罗米修斯一样安装了度量标准。
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
如果您想使用它,请参考文档。当您的容器正在运行时,您还可以进入容器并执行普通的顶级linux命令。