节点上的CPU限制(核心)超过100%

时间:2019-11-26 16:40:54

标签: kubernetes

我刚刚在kubernetes仪表板上注意到了这一点:

CPU请求(核心) 0.66(16.50%)

CPU限制(核心) 4.7(117.50%)

我对为什么将上限设置为117.50%感到非常困惑...?我的一项服务使用太多了吗,但不是在请求中吗?在查看kubectl描述节点时,我发现没有任何服务使用的服务超过2%(总共有43个服务,最多为86个)。

谢谢。

2 个答案:

答案 0 :(得分:1)

我的大致理解是,Kubernetes可以让您过量使用-也就是说,特定节点上的资源请求超出了该节点的容量-使您的资源使用效率更高。

例如,假设您正在运行部署A和B,这两个部署在空闲时仅需要100 MB的内存(总共200 MB),但是在他们积极处理请求时需要1 GB的内存。 。您可以进行设置,以使它们中的每一个都在具有1 GB可用内存的节点上运行。您还可以将它们放在具有1.5 GB内存的单个节点上,假设A和B不必同时处理流量,从而使自己免于庞大的资源分配。

如果您使用大量的微服务,这可能尤其合理:您甚至可能知道B直到A都完成了一个请求才能处理数据,从而为您提供了一个更强有力的保证,即不会重叠并且不会引起问题。

Kubernetes如何决定是否过量使用资源取决于您为部署配置的服务质量(QoS)容限。例如,您不会在Guaranteed QoS类上过度使用,但是如果使用默认类BestEffort,则可能会看到过量使用。

您可以在Kubernetes documentation中了解有关QoS类的更多信息。

答案 1 :(得分:-1)

限制(所有限制)允许过量使用节点的资源。请求不能,因此它永远不能超过可用的100%。基本上,“请求”是一个最低要求,但是“限制”是最大突发范围,每个人一次都突发的可能性不大。而且,如果这对您来说很可能,您应该将请求和限制设置为相同的值。