Edw*_*ard 12 memory kubernetes
我有一个在 Kubernetes 上运行的服务处理从另一个资源传递的文件。单个文件的大小可以在 10MB 到 1GB 之间变化。
最近我看到 pod 因为 OOMKilled 错误而死了:
State: Running
Started: Sun, 11 Nov 2018 07:28:46 +0000
Last State: Terminated
Reason: OOMKilled
Exit Code: 137
Started: Fri, 09 Nov 2018 18:49:46 +0000
Finished: Sun, 11 Nov 2018 07:28:45 +0000
Run Code Online (Sandbox Code Playgroud)
我通过增加 pod 上的资源(内存)限制来缓解这个问题。但是我担心每当出现流量或文件大小激增时,我们都会再次遇到这个 OOMKilled 问题。但是如果我将内存限制设置得太高,我担心它会导致这个 pod 的主机出现问题。
我通读了 Kubernetes 给出的最佳实践:https ://kubernetes.io/docs/tasks/administer-cluster/out-of-resource/#best-practices 。但我不确定通过添加 --eviction-hard 和 --system-reserved=memory 可以解决问题。
有没有人有过类似问题的经验?
任何帮助,将不胜感激。
不仅仅是 Kubernetes/Container 运行时问题,这是您应用程序中更多的内存管理,这将取决于运行时语言或 JVM 之类的东西是否正在运行您的应用程序。
您通常希望为应用程序中的内存使用设置一个上限,例如,JVM 中的最大堆空间,然后为垃圾收集和溢出留出一点空间。
另一个例子是 Go 运行时,看起来他们已经讨论了内存管理,但在撰写本文时没有解决方案。对于这些情况,最好ulimit
为应用程序的特定进程手动设置虚拟内存。(如果您有泄漏,您将看到其他类型的错误)或使用超时
还有手动 cgroup 管理,但又是 docker 和 Kubernetes 应该做的。
这是一篇很好的文章,其中包含一些有关在容器中管理 JVM 的见解。
归档时间: |
|
查看次数: |
14296 次 |
最近记录: |