当没有超过 pod 资源限制但超过单个容器资源限制时会发生什么?

时间:2021-06-11 14:38:20

标签: kubernetes

我正在搜索有关 kubernetes 请求和限制的特定信息,但仍然没有找到答案或只是不太了解。假设我为单个 Pod 定义了两个容器 A 和 B,都具有资源限制和请求:

答: RAM请求:1Gi 内存限制:2Gi 乙: RAM请求:1Gi 内存限制:2Gi

因此,我们的 PoD 限制为 4Gi(总计)。假设 A 容器超出限制(比如 +1Gi),但 B 仅消耗 64Mi。所以,我的问题是:

  1. pod 会发生什么?被驱逐了吗?
  2. 容器 A 是否重新启动?
  3. 容器 A 是否允许使用容器 B 的可用 RAM?

谢谢!

2 个答案:

答案 0 :(得分:2)

只是补充一些细节

内存请求:是否为容器预留的内存,是否完全使用。

内存限制:是此容器应该使用的最大内存的限制。因此,当容器内存请求超过时,是否分配取决于当时运行该容器的机器中可用的空闲内存

根据我的理解回答您的问题:

  • 如果容器 A 达到其 2GI 的内存限制,它将 OOM 并重新启动容器。

  • 如果容器 A 超过其 1GI 的内存请求,它会尝试从机器的可用内存中获取所需的内存(最大到设置的限制)

希望这能解答您的疑问

答案 1 :(得分:2)

<块引用>

豆荚怎么了?被驱逐了吗?

如果超出容器的内存限制,则调用内核的 OOM 杀手并终止容器的进程。然后 Pod 在同一个节点上启动一个新容器。

(CPU 限制使用不同的机制(CFS 带宽控制)来限制进程的 CPU 周期而不是终止进程。)

<块引用>

容器A重启了吗?

是的。

<块引用>

容器 A 是否允许使用容器 B 的可用 RAM?

对每个容器单独跟踪内存。它们没有汇集到同一个限制中。