resources.limits 和 resources.requests Guaranteed QoS
在Kubernetes中,resources.limits
和 resources.requests
是两个不同的资源配置参数,它们对Pod的行为和调度有着不同的影响:
-
resources.requests
:这是容器请求的最小资源量,Kubernetes调度器会确保每个节点有足够的资源来满足所有容器的请求。如果节点资源不足以满足Pod的请求,Pod将不会被调度到该节点上。 -
resources.limits
:这是容器可以使用的最大资源量。如果容器尝试使用超过其限制的资源,Kubernetes会进行限制。对于CPU,超过限制可能会导致容器无法获得更多的CPU时间片;对于内存,超过限制可能会触发OOM Killer,强制结束占用过多内存的进程。
如果一个Pod的resources.limits
和resources.requests
设置为相同的值,这意味着:
- 调度影响:Pod的调度不会受到影响,因为
requests
是调度决策的主要因素,只要节点有足够的资源来满足这个值,Pod就会被调度。 - 运行时行为:在运行时,Pod中的容器将被限制在请求的资源量内运行,因为
limits
和requests
相同,容器既不会因资源不足而被饿死,也不会因资源超用而被限制。 - 优先级和稳定性:设置
limits
和requests
相同,可以提高Pod的优先级和稳定性。在节点资源不足时,这种配置的Pod(属于Guaranteed QoS类)会被优先保护,不会轻易被驱逐。
时来天地皆同力,运去英雄不自由