Kubernetes:没有资源请求的被驱逐的pod会成功重新安排吗?

时间:2017-11-14 22:32:24

标签: kubernetes

我已经阅读了尽可能多的Kubernetes文档,但我仍然无法理解我想到的具体方案。

为了举例,我们说我有一个1GB内存的节点。我还有一个部署需要100个pod,内存限制设置为100MB,内存请求未设置。这些pod大多数时间只使用1MB,但有时可以跳到99MB。

问题1:是否会将所有100个pod安排到节点上?

现在,让我们说所有的pod同时开始使用99MB的内存并留在那里。机器上没有足够的内存来处理,但没有一个pod超出了内存限制。我假设Kubernetes在这一点上驱逐了一些豆荚。

问题2:当Kubernetes尝试重新安排被驱逐的pod时,它是否成功,因为没有设置内存请求?当节点再次立即耗尽内存时会发生什么?这种驱逐,重新安排一次又一次地发生吗?如果是这样,我是否可以使用一些指标来检测是否发生这种情况?

2 个答案:

答案 0 :(得分:1)

只要有一个合格的节点可以满足请求的资源,就会安排一个Pod。因此,如果您未指定请求,则广告连播会很快安排好时间。请求和限制是完全不同的东西。请求是计划豆荚的条件,而限制是已经计划运行的豆荚的条件。

如果您过度使用节点上的实际资源,则会遇到典型的问题-如果您过度使用内存,它将开始交换,而CPU只会导致总体速度变慢。无论哪种方式,节点和节点都将变得无响应。很难处理,诸如请求和限制之类的工具会设置合理的边界,这将帮助您将事情拖到这么远,而您只会看到吊舱无法安排时间。

答案 1 :(得分:0)

  

当Kubernetes调度程序调度在节点上运行的pod时,它将始终确保容器的总限制小于节点容量。如果节点资源不足,Kubernetes将不会安排在其上运行任何新容器。如果在启动窗格时没有节点可用,则窗格将保持挂起状态,因为Kubernetes调度程序将无法找到任何可以运行所需窗格的节点。

     

Kubernetes Cookbook

我认为这段摘录让您对内部的运作方式有了一些了解。所以你的问题的答案:

  1. 最多将有10个pod安排到您的节点中。

  2. 如果节点中没有空闲内存,则被驱逐的pod将处于待处理状态。此外,当其他pod和服务需要资源时,k8s可以简单地驱逐pod。