根据节点CPU利用率调度EKS Pod

3

我想知道是否有一种方法可以根据节点的CPU利用率来调度Pod。我们在eks中的大多数Pod被调度到单个节点上,即使其他节点还有很多CPU可用。我们的cron作业正在尝试在同一节点上启动新的Pod,并由于低CPU而无法启动。我相信默认的kube调度程序应该可以处理这个问题,但在我们的情况下没有发生。

那么,有没有设置Pod根据CPU利用率进行调度的选项,或者我们是否可以通过调度策略,如节点选择器/关联性/资源请求&限制等实现此目的,

提前感谢您!

1个回答

2
这段文字的意思是:“调度程序依赖于 Pod 的 CPU 请求设置,而不是 CPU 使用情况。您需要设置一个足够高的 CPU 请求,以便调度程序知道已经包含一个 Pod 的节点不足,并将其安排在能够托管它的另一个节点上。如果您绝对想要在不同的节点上分散您的 Pod,可以使用 topology-spread-constraint。”
topologySpreadConstraints: 
- maxSkew: 1 
   topologyKey: kubernetes.io/hostname 
   whenUnsatisfiable: ScheduleAnyway 
   labelSelector: 
     matchLabels:
       app: myApp

注意:使用 ScheduleAnyway 配置后,调度器将优先考虑扩散 Pod,如果不可能,则仍会进行调度。您也可以选择设置 DoNotSchedule 来阻止它的执行。

非常感谢,通常这是最好的方法,但我想知道是否有我所问的选项。 - John
如果您绝对想要在不同的节点上分布您的Pods,您可以使用topology-spread-constraint,我刚刚编辑了我的答案以反映它。 - Fares
这对 @John 有帮助吗? - Fares
1
我们选择了节点选择器的方式,因为在我们的使用情况下,这种方式似乎更具有容错性。我们实际上专门为作业分配了一些节点。这些信息对我们未来的实现非常有帮助,非常感谢您的建议。 - John
很好,感谢您的反馈!如果能点个赞就更好了 ;) - Fares

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接