购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.9.2 资源请求对Pod调度的影响

当容器配置资源请求后,调度器会根据该请求值选择能够满足的节点。如果没有节点能满足,则Pod将无法被调度,并且处于“Pending”状态。因此,Kubernetes中存在一种资源管理机制,这个机制有以下作用。

调度决策:帮助调度器在集群中选择合适的节点,以满足Pod的资源需求。

均衡负载:根据资源请求来平衡节点上的资源使用,减少某些节点资源过载而其他节点资源空闲的情况。

资源规划:有助于规划和优化集群的资源分配,提高整体资源利用率。

例如:在Kubernetes集群中已创建了6个Pod,其中3个Pod资源请求为500 Mi内存和0.6核CPU,另外3个Pod资源请求为1 Gi内存和1核CPU。这些Pod节点分布如图3-7所示。

图3-7 Pod节点分布1

在这种情况下,创建一个资源请求为1 Gi内存和1核CPU的Pod,调度器会将该Pod分配给Node1节点,如图3-8所示。这是因为Node2节点总资源请求为3 Gi内存和3.2核CPU,其中CPU无法满足该Pod的需求。

需要了解的是,调度器还会考虑其他因素,如节点资源利用率、污点、亲和性规则等,以做出最终的调度决策,而资源请求只是影响决策的因素之一。

图3-8 Pod节点分布2

如果再创建一个Pod,资源请求为2 Gi内存和1核CPU,那么Pod会被调度到哪个节点上呢?

答案是该Pod无法被调度。因为这两个节点只能满足CPU的需求,不能满足内存的需求。此时,通过“kubectl describe pod <Pod名称>”命令查看事件,你将看到“Insufficient memory”的提示。

需要注意的是,资源请求并不会直接占用节点资源,而是用于调度和分配。这样可以避免将Pod调度到资源不足的节点上,确保Pod在运行时能够正常获取所需的计算资源。 xp/OuL7nTlyqQNydPTsHwX5vDHZRNE1b/VGjBx56zJedqwi5wktC3fXHGBFyxMUT

点击中间区域
呼出菜单
上一章
目录
下一章
×