我想使用水平Pod自动计算器批量运行一组长期运行的任务。在某些情况下,这些任务可能需要几分钟或几个小时才能运行,并且总是使用80%~100%的可用CPU资源。
我想了解自动分配器的行为,当它决定是时候缩小舰队规模。
是否有一种方法可以防止这种情况发生,方法是优先选择CPU利用率最低的豆荚,以便首先缩小CPU利用率?这样,那些正在加工的吊舱就会不动了。
发布于 2021-06-22 05:45:38
在缩小副本数量时,我不知道如何自定义部署中的哪些副本应该删除。
也许您可以通过设置terminationGracePeriodSeconds和使用preStop挂钩来解决问题。
使用terminationGracePeriodSeconds,您可以指定容器在发送第一个SIGTERM信号和发送SIGKILL信号之间的等待时间。这对你来说不太理想,因为AFAIU你不知道要花多长时间才能完成分配的任务。但是,如果将此值设置得足够高,也可以利用preStop挂钩。来自文档
由于API请求或管理事件(如活动/启动探测失败、抢占、资源争用等),在容器终止之前立即调用PreStop。如果容器崩溃或退出,则不调用处理程序。终止的原因将传递给处理程序。在执行PreStop钩之前,Pod的终止宽限期倒计时开始。不管处理程序的结果如何,容器最终将在Pod的终止宽限期内终止。容器块的其他管理,直到钩子完成或达到终止宽限期为止。
如果您能够从容器内部运行一个“阻塞”命令,直到容器完成工作,那么您应该能够使它仅在空闲时终止。
让我还链接一篇很好的博客文章,解释整个事情是如何工作的:https://pracucci.com/graceful-shutdown-of-kubernetes-pods.html
https://stackoverflow.com/questions/68068830
复制相似问题