Kubernetes:了解资源请求/限制和调度

Ble*_*Fox 7 kubernetes

我试图了解时间表在某些情况下的行为方式/原因。有人可以解释调度程序在这些场景中会做什么(以及为什么)吗?

假设我有一个 10GB 的内存盒

我有一个内存请求设置为 1G 的容器。我运行了它的 10 个副本,我希望在同一个盒子上看到所有 10 个(在这种情况下忽略任何 kube 系统样式的 pod)

现在假设我还添加了设置为 2G 的内存限制。发生什么了?对我来说,这对调度程序说“这个 pod 要求 1G,但可以增长到 2G”——调度程序是否仍将所有 10 个放在同一个盒子上,知道它很可能不得不将其中的一半踢掉?或者它会分配 2G,因为这是描述的限制?

假设如果我不声明限制,那么 pod 会一直增长,直到节点耗尽内存,然后杀死超出其请求资源的 pod,我是否也正确?或者它会假设某种默认值?

Rad*_*nka 5

请求是需要在节点上专门提供给该 pod 以便它进行调度的内容。这是从可用资源计数中扣除的内容。限制就是限制。pod 的使用将被限制为该值。

因此,如果您有 10G 节点,并且想要req: 1G, limit: 2G在其上安装pod,您将能够安装其中的 10 个,并且如果其他节点有足够的未使用内存(即您请求 1G,但实际上使用 700M,这为您提供了大约 3G 请求,但未使用的空间可用于由 Pod 突发到 2G 限制。