gpt4 book ai didi

docker - CPU 限制在 Kubernetes 中有何用途? docker ?

转载 作者:行者123 更新时间:2023-12-02 00:25:04 26 4
gpt4 key购买 nike

我深入研究了 Kubernetes 资源限制,很难理解 CPU limits是给。我知道 Kubernetes 通过 requestslimits深入到(在我的例子中)Docker 运行时。

示例:我有 1 个带 1 个 CPU 的节点和 2 个带 CPU 的 Pod requests: 500mlimits: 800m 。在 Docker 中,这会导致 ( 500m -> 0.5 * 1024 = 512 ) --cpu-shares=512和 ( 800m -> 800 * 100 ) --cpu-quota=80000 。 Pod 由 Kube 调度程序分配,因为 requests总和不超过节点容量的100%;就limits而言该节点已过度使用。

上面允许每个容器每 100 毫秒周期获得 80 毫秒 CPU 时间(默认)。一旦 CPU 使用率达到 100%,CPU 时间就会根据容器的权重在容器之间共享,以 CPU 份额表示。根据 1024 的基值,每个容器占 50%,每个容器占 512 个份额。此时 - 根据我的理解 - limits没有更多的相关性,因为没有一个容器能够再获得 80 毫秒的时间。他们都会得到 50 毫秒。所以无论多少limits我定义,当使用率达到临界100%时,它按 requests 进行分区无论如何。

这让我想知道:为什么我要定义CPU limits首先,过度 promise 有什么区别吗? requests另一方面,“当一切都在使用时我能获得多少份额”是完全可以理解的。

最佳答案

设置 CPU 限制的一个原因是,如果您设置 CPU 请求 == 限制并且内存请求 == 限制,您的 Pod 就会被分配一个服务质量等级 = 保证, which makes it less likely to be OOMKilled if the node runs out of memory 。这里我引用 Kubernetes 文档 Configure Quality of Service for Pods :

For a Pod to be given a QoS class of Guaranteed:

  • Every Container in the Pod must have a memory limit and a memory request, and they must be the same.
  • Every Container in the Pod must have a CPU limit and a CPU request, and they must be the same.

使用Guaranteed QoS 类别的另一个好处是,它允许您锁定 Pod 的独占 CPU,这对于某些类型的低延迟程序至关重要。引用自Control CPU Management Policies :

The static CPU management policy allows containers in Guaranteed pods with integer CPU requests access to exclusive CPUs on the node. ... Only containers that are both part of a Guaranteed pod and have integer CPU requests are assigned exclusive CPUs.

关于docker - CPU 限制在 Kubernetes 中有何用途? docker ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48907371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com