【问题标题】:Kubernetes (minikube) pod OOMKilled with apparently plenty of memory left in nodeKubernetes (minikube) pod OOMKilled,节点中明显剩余大量内存
【发布时间】:2017-12-29 10:02:45
【问题描述】:

我正在使用 minikube,以

开头
minikube start --memory 8192

对于节点的 8Gb RAM。 我正在分配具有资源限制的 pod

    resources:
      limits:
        memory: 256Mi
      requests:
        memory: 256Mi

所以每个节点有 256Mb 的 RAM,我假设,32 个 pod 直到达到 8Gb 内存限制,但问题是,每当我到达要部署的第 8 个 pod 时,第 9 个将永远不会运行,因为它是不断OOMKilled。

就上下文而言,每个 pod 都是一个带有 frolvlad/alpine-oraclejdk8:slim Docker 容器的 Java 应用程序,使用 -Xmx512m -Xms128m 运行(即使 JVM 确实使用完整的 512Mb 而不是 256Mb,我仍然远离 16 pod 限制达到 8Gb 上限)。

我在这里缺少什么?为什么 OOMKilled 的 pod 显然还剩下这么多可用的可分配内存?

提前致谢

【问题讨论】:

    标签: java memory kubernetes minikube


    【解决方案1】:

    您必须了解请求和限制的工作方式。

    请求是对节点上调度 pod 所需的可分配资源量的要求。这些不会导致 OOM,它们会导致 pod 无法被调度。

    另一方面,限制是给定 pod 的硬限制。吊舱将在此级别封顶。因此,即使您有 16GB 的可用 RAM,但有 256MiB 的限制,一旦您的 pod 达到此级别,它就会遇到 OOM 终止。

    如果需要,您可以只定义请求。然后,您的 pod 将能够增长到完整的节点容量,而不会受到限制。

    https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

    【讨论】:

    • 例如:我有一个具有 1gb 内存和 2 个 pod 的节点。 Pod1 的内存限制为 0.5gb。现在节点可用内存为 0.5gb。另一个 Pod2 没有限制。 Pod2 可以增长到超过 0.5gb 内存吗?也就是说,Pod2 可以使用分配给 Pod1 的内存吗??
    猜你喜欢
    • 1970-01-01
    • 2022-10-26
    • 2019-04-15
    • 1970-01-01
    • 2021-02-19
    • 2020-02-01
    • 1970-01-01
    • 2019-04-26
    • 2018-11-01
    相关资源
    最近更新 更多