目标
澄清K8S容器CPU使用率的行为,当限制设置到远远低于可用cpu时,并确认如何设置限制的理解是否正确。
背景
我有一个2 2CPU的节点,所以2000米可以是上限。每个命名空间都使用LimitRange设置,这将容器的CPU限制在500 m以内。
kind: LimitRange
metadata:
name: core-resource-limits
spec:
limits:
- default:
cpu: 500m
memory: 2Gi
defaultRequest:
cpu: 100m
type: Container指示
即使有2个CPU可用(没有其他进程/容器等待)并且容器可以运行,它也只能使用0.5CPU,而1.5CPU将被闲置。这是正确的吗?
如何设置LimitRange
我相信我可以设置限制,如75%-80%的可用2 CPU,以更好地利用CPU资源。因为如果有多个容器试图比请求更多地声明CPU,K8S将根据每个容器的请求值(一些来自OpenShift,但认为与K8S相同)在容器之间分配CPU。这是正确的吗?
kind: LimitRange
metadata:
name: core-resource-limits
spec:
limits:
- default:
cpu: 1500m
memory: 2Gi
defaultRequest:
cpu: 100m
type: ContainerCPU请求表示容器可能消耗的最小CPU量,但是如果没有争用,则可以使用节点上所有可用的CPU。如果节点上存在CPU争用,则CPU请求提供系统上所有容器的相对权重(),用于容器可能使用的CPU时间。
荚中的每个容器都可以指定在节点上限制使用的CPU数量。CPU限制控制容器可以使用的最大CPU数量,而不依赖于节点上的争用。如果容器试图超过指定的限制,系统将节流容器。这允许容器具有一致的服务级别,而不依赖于调度到节点的荚数。
CPU的6%意味着节点CPU时间的6% (CPU请求)保留给这个吊舱。因此,它保证它总是得到至少这个数量的CPU时间。它仍然可以突破高达12% (CPU限制),如果还有剩余的CPU时间。
检查我的一个容器,我看到Kubernetes为他们设置了CpuPeriod,CpuQuota。Docker (https://docs.docker.com/engine/reference/run/)提到CFS文档(https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt),从那里的信息来看,这些似乎是很难的限制。
发布于 2018-02-26 09:23:36
14.1.3.了解CPU请求如何影响CPU时间共享
但是,如果一个容器想要消耗尽可能多的,而另一个容器在给定的时刻处于空闲状态,那么第一个容器将被允许使用整个CPU时间(减去第二个容器所用的少量时间,如果有的话)。毕竟,如果没有其他人使用,那么使用所有可用的是有意义的,对吗?一旦第二个容器需要CPU时间,它就会得到它,第一个容器将被节流回来。

即使有2个CPU可用(没有其他进程/容器等待)并且容器可以运行,它也只能使用0.5CPU,而1.5CPU将被闲置。这是正确的吗?
所以这是正确的。
https://stackoverflow.com/questions/48725868
复制相似问题