Kubernetes DaemonSet Pod 超出内存限制但未被杀死

Kubernetes DaemonSet Pod 超出内存限制但未被杀死

我们使用 kubernetes(具体来说:openshift)在我们的团队中运行基础设施。

其中一个守护进程集 fluentd 目前造成了很多麻烦,经常导致完整节点宕机,并对 CPU、内存和磁盘 I/O 提出巨大的要求(真的,这太愚蠢了!)。

我们在 DaemonSet 定义中对 pod 设置了以下资源限制和请求:

resources:
  limits:
    memory: 512Mi
  requests:
    cpu: 100m
    memory: 512Mi

我原本以为当内存消耗超过 512Mi 时,k8s 会终止该 pod。然而,这些 pod 可以自由地消耗 1000% 以上的 CPU 和机器上所有可用的 RAM(远高于 512Mi)。

我做了一些研究,似乎世界对于超出内存限制时会发生什么存在很大分歧。

  1. 有人说该 pod 将持续运行,直到系统 OOM 并决定终止某些进程。
  2. 其他人说当 pod 超出分配的内存时,它将立即被杀死。

我们非常希望第二个选项能够应用于这个讨厌的 pod!我们还缺少什么?

答案1

当 Pod 过度消耗 CPU/RAM 时,您是否管理了 kubernetes/集群限制/请求以杀死它们,而不是在您的 Helm 图表或 K8s 配置文件上应用这些限制?

关于你的问题的一些很好的链接:这里

祝你有美好的一天,希望对你有所帮助

答案2

除了设置上述限制之外,我建议您在这种情况下为命名空间设置资源配额以及命名空间内所有容器的默认限制,如下所述这里

除此之外,您还可以配置资源不足处理。希望对你有帮助。

相关内容