【问题标题】:What happens if a Kubernetes pod exceeds its memory resources 'limit'?如果 Kubernetes pod 超出其内存资源“限制”会怎样?
【发布时间】:2019-07-28 16:27:45
【问题描述】:

Kubernetes 文档中关于如果 pod 的内存占用量增加到超过 resources.limits 下指定的值会发生什么情况有些模糊。

https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#how-pods-with-resource-limits-are-run

它指定如果 pod 的占用空间增长到超过其 limits 值,则它“可能”被终止。 “可能”是什么意思?哪些条件会导致它被终止,哪些条件会允许它按原样继续运行?

【问题讨论】:

  • AFAIK 你会体验到 pods OOM 被杀死并因此停止。现在,如果您指的是请求限制,那么 pod 将被驱逐并且无法安排

标签: kubernetes


【解决方案1】:

问:如果 Kubernetes pod 超出其内存资源“限制”会怎样?

它将重新启动。

与 Pod 驱逐不同,如果 Pod 容器被 OOM 杀死,它可能会被 kubelet 基于其 RestartPolicy 重新启动。

您可以将Configure Out Of Resource Handling 换成您的Node。

驱逐最终用户 Pods

如果kubelet 无法在节点上回收足够的资源,kubelet 开始驱逐 Pod。

kubelet 首先根据 Pod 对饥饿资源的使用量是否超过请求,然后根据 Priority,然后根据相对于 Pod 调度请求的饥饿计算资源的消耗来对 Pod 进行驱逐排名。

【讨论】:

  • 重启了怎么办? kubelet 是关闭 pod 并重新启动它,还是 Linux 内核 OOM 杀手强行 SIGKILL 它?如果 kubelet 仍然有足够的内存,但达到了 pod 限制怎么办?
  • @SineSwiper:它有 5 个阶段:1)pod 状态设置为“Terminating”,它将停止接收请求,2)调用 preStop Hook,3)向 pod 发送 SIGTERM,4 ) k8s 在宽限期内等待,5) 发送 SIGKILL:cloud.google.com/blog/products/containers-kubernetes/…
【解决方案2】:

限制是指内存和cpu。 如果内存消耗增加,它将被终止,但在 CPU 的情况下,操作系统可以允许微小的时间片消耗超过允许的 CPU 份额。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2017-07-31
    • 2020-01-28
    相关资源
    最近更新 更多