我对在Kubernetes中为Pod选择节点有疑问。假设,我在Kubernetes中有一个节点,具有2CPU和8 GB RAM。集群中已经运行了一个Pod,其资源需求如下:
resources:
limits:
cpu: 1
memory: 4Gi
requests:
cpu: 0.5
memory: 2Gi
在这种情况下,我相信1个CPU中的0.5个和4GiB中的2GiB是为这个Pod保留的。在“限制”的情况下,这个吊舱可以达到1CPU和4GiB RAM。
如果我添加了一个具有此资源需求的新pod:
resources:
limits:
cpu: 1.5
memory: 6Gi
requests:
cpu: 0.5
memory: 2Gi
这个pod可以在同一个节点上分配吗?
在这里,如果我们考虑请求的CPU和内存量,Node足以调度pod。
也就是说,Pod 1使用0.5/2 CPU和2/8 GB内存。新的Pod 2要求相同的0.5CPU和2GB内存。但如果考虑极限,总价值为:
Pod 1 CPU + Pod 2 CPU(限制)= 1 + 1.5 = 2.5
Pod 1内存+Pod 2内存(限制)= 4 + 6 = 10 GB
这超过了总资源。
在这种情况下,调度是如何工作的?谢谢.
换句话说,如果节点有资源可用于我请求的资源,但它没有资源可用于我的资源限制。在这种情况下,调度程序是将我的pod调度到该节点,还是只将我的pod调度到有能力满足我的限制的节点上?
2条答案
按热度按时间rvpgvaaj1#
我认为您可以根据该资源需求在Kubernetes中部署2个资源,尽管需求限制超过了总资源
但是当你的Pod真的使用了超过系统或者你的总节点的资源的时候,系统会自动杀死这个Pod。
当您的总节点或系统有足够的资源可供使用时,资源限制可用。
我认为追索权限制的概念就像MySQL“之间.和...限制...”例如:
我们在一个表中有10行数据,但我编写了SQL来选择
select * from table where id between 0 and 100 LIMIT 1000
7dl7o3gd2#
Hi @Neron Joseph如果您的新pod请求的资源高于节点上当前可用的资源,则您的pod将处于Pending状态。
参考:https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource/#specify-a-cpu-request-that-is-too-big-for-your-nodes