首页 > 解决方案 > 如果可突发和尽力而为的容器都需要计算资源,kubernetes 是否有任何优先级?

问题描述

我将用一个例子来解释我的问题。

假设在一个节点(容量 X+1 cpu,Y+1 内存)中有两个容器,一个是 Burstable 类型的容器,另一个是尽力而为类型的容器。

如果可突发容器(配置为 X cpu request, Y memory request)已经在使用节点的 X cpu, Y memory。

当 Burstable 和 Best-effort 都请求该节点未使用的 1 个 cpu、1 个内存时,接下来会发生什么。Kubernetes 会优先考虑 Burstable 容器而不是 Best-effort 还是随机的。

注意:我的问题不是关于进程的驱逐,而是关于哪个容器将获得未使用的 1 cpu。

标签: kubernetescontainers

解决方案


来自:https ://github.com/kubernetes/community/blob/master/contributors/design-proposals/node/resource-qos.md

如果不能满足 CPU 保证(例如,如果系统任务或守护进程占用大量 CPU),Pod 不会被杀死,它们将被暂时限制。

内存是一种不可压缩的资源,所以让我们稍微讨论一下内存管理的语义。

Best-Effort pod 将被视为最低优先级。如果系统内存不足,这些 pod 中的进程首先会被杀死。不过,这些容器可以使用节点中任意数量的空闲内存。

有保证的 pod 被认为是最高优先级的,并且保证在超过其限制之前不会被杀死,或者如果系统处于内存压力之下并且没有可以驱逐的较低优先级的容器。

Burstable pod 具有某种形式的最小资源保证,但可以在可用时使用更多资源。在系统内存压力下,这些容器一旦超过它们的请求并且不存在 Best-Effort pod 就更有可能被杀死。

因此,Burstable pod 似乎将优先于 Best Effort pod。


推荐阅读