我对 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 中部署 2 个资源,尽管需求限制超出了总资源
但是当你的 pod 确实使用了超过系统的资源或者你的节点总资源时,该 pod 就会被系统自动杀死。
当您的总节点或您的系统有足够的资源可供使用时,资源限制可用。
我认为追索权限制的概念就像MySQL“在...和...之间”,例如:
我们一张表有10行数据,但是我写了SQL来选择
select * from table where id between 0 and 100