Kubernetes 调度程序如何根据资源限制和请求来调度 pod?

问题描述 投票:0回答:1

我对 Kubernetes 中 pod 的节点选择有疑问。假设我在 Kubernetes 中有一个节点,具有 2CPU 和 8GB RAM。集群中已经有一个 Pod 正在运行,其资源需求如下:

 resources:
    limits:
      cpu: 1
      memory: 4Gi
    requests:
      cpu: 0.5
      memory: 2Gi

在这种情况下,我相信 1 个 CPU 中的 0.5 个和 4GiB 中的 2GiB 是为此 pod 保留的。在限制的情况下,这个 Pod 最多可以达到 1CPU 和 4GiB RAM。

如果我添加了具有此资源要求的新 Pod:

 resources:
    limits:
      cpu: 1.5
      memory: 6Gi
    requests:
      cpu: 0.5
      memory: 2Gi

这个pod可以分配在同一个节点上吗?

这里,如果我们考虑请求的 CPU 和内存量,则 Node 足以调度 pod。

即 Pod1 使用 0.5/2 CPU 和 2/8GB 内存。新的 Pod2 请求相同的 0.5cpu 和 2GB 内存。但如果考虑极限的话,总价值是:

Pod1 CPU + Pod2 CPU(限制)= 1 + 1.5 = 2.5
Pod1 内存 + Pod2 内存(限制)= 4 + 6 = 10GB

这超出了总资源。

在这种情况下,调度是如何进行的?谢谢。

kubernetes scheduling
1个回答
0
投票

我认为你可以根据该资源需求在 Kubernetes 中部署 2 个资源,尽管需求限制超出了总资源

但是当你的 pod 确实使用了超过系统的资源或者你的节点总资源时,该 pod 就会被系统自动杀死。

当您的总节点或您的系统有足够的资源可供使用时,资源限制可用。

我认为追索权限制的概念就像MySQL“在...和...之间”,例如:

我们一张表有10行数据,但是我写了SQL来选择

select * from table where id between 0 and 100

© www.soinside.com 2019 - 2024. All rights reserved.