【问题标题】:Is it possible to enforce a hard memory limit on pods?是否可以对 pod 实施硬内存限制?
【发布时间】:2022-01-18 13:13:53
【问题描述】:

容器可以超出其内存请求 [...]。如果 Container 分配的内存超过其限制,则该 Container 将成为终止的候选者。

来自the documentation 我了解到设置资源限制不能限制 pod 的内存使用量。

我有一个容器,它总是会用完所有可用的内存,但也可以使用更少量的内存。有什么方法可以为运行容器的 pod 的可用内存量设置硬限制?

既然是is possible in Docker我希望Kubernetes也有办法实现这个,但是我没找到办法。

【问题讨论】:

标签: kubernetes kubernetes-pod docker-container


【解决方案1】:

标准的requestlimits 是可能的。先看official documentation page

当您指定Pod 时,您可以选择指定Container 需要多少每个资源。最常见的指定资源是 CPU 和内存 (RAM);还有其他的。

当您为 Pod 中的容器指定资源 request 时,调度程序会使用此信息来决定将 Pod 放置在哪个节点上。当您为 Container 指定资源 limit 时,kubelet 会强制执行这些限制,以便正在运行的容器不允许使用超过您设置的限制的资源。 kubelet 还至少保留了该系统资源的 request 量,专门供该容器使用。

在 kubernetes 中,如果您想专门为给定的容器保留最少的内存量,您应该使用request。另一方面,如果您想强制容器不能使用超过您指定的内存,则必须使用limit

这是一个例子:

resources:
  limits:
    cpu: 500m
    memory: 1Gi
  requests:
    cpu: 500m
    memory: 2Gi

另请参阅this great article,了解如何在 Kubernetes 中设置正确的请求和限制。

【讨论】:

    【解决方案2】:

    正常的请求和限制应该可以工作。文档可能具有误导性。 Pod 不会超出内存限制,如果他们尝试这样做会导致 OOM 和崩溃(重新启动)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 2011-12-05
      • 2016-05-07
      • 1970-01-01
      相关资源
      最近更新 更多