OpenShift/Kubernetes中内存处理的正确方式是什么?
如果我在OKD中创建了一个项目,我如何确定pod的最佳内存使用?例如,如果我使用1个部署1-2个pod,每个pod使用300-500 Mb的RAM - Sping Boot 应用程序。所以从技术上讲,20个pod使用大约6- 10 GB的RAM,但正如我所看到的,有时每个项目可能有大约100-150个容器,这至少需要30- 50 GB的RAM。
我还尝试了水平扩展和/或请求/限制,但每个微服务仍然使用大量内存。
然而,要启动一个吊舱,它需要大约500- 700 MB的RAM,在Spring容器已经启动后,他们可以生活在大约300 MB如上所述。
我有两个问题:
- 它是否能够给予额外的内存,但仅限于每次pod启动的前X分钟?
- 如果没有,比什么是最好的做法来处理内存短缺,如果我有有限的内存(16 GB),并希望运行35-40吊舱?
提前感谢您的解答!
1条答案
按热度按时间2nbm6dog1#
它是否能够提供额外的内存,但仅限于每次pod启动的前X分钟?
当您将limit设置为比request更高的值时,您会遇到这种情况。这将允许pod突发,除非它们同时需要内存。
如果没有,比什么是最好的做法来处理内存短缺,如果我有有限的内存(16GB),并希望运行35 - 40吊舱?
如果集群需要更大的容量,通常使用某种形式的集群自动缩放器向集群添加更多节点,如果在云中运行,这很容易。
一般来说,Java和JVM是内存饥渴的,如果你想使用更少的内存,考虑一些其他的技术。一个应用程序需要/使用多少内存完全取决于你的应用程序,例如使用什么数据结构。