首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止水平吊舱自动分频器取出正在积极工作的吊舱?

如何防止水平吊舱自动分频器取出正在积极工作的吊舱?
EN

Stack Overflow用户
提问于 2021-06-21 13:28:51
回答 1查看 268关注 0票数 0

我想使用水平Pod自动计算器批量运行一组长期运行的任务。在某些情况下,这些任务可能需要几分钟或几个小时才能运行,并且总是使用80%~100%的可用CPU资源。

我想了解自动分配器的行为,当它决定是时候缩小舰队规模。

  1. 假设有4个实例都在工作,它们都处于95%的CPU利用率。由于最大实例#设置为4,因此不能再扩展。扩展阈值设置为平均CPU利用率的75%。
  2. 如果两个实例提前完成工作,而另两个实例仍有几个小时的工作时间,那么车队的平均CPU利用率就会下降到50%。
  3. 然后自动分频器决定是时候缩小规模了。然而,4个实例中有2个仍在工作,因此自动分频器可能会选择正在积极工作的吊舱并终止它的可能性为50%。
  4. 如果发生这种情况,工作进度将丢失&标记为不完整,其中一个可用的荚将获取工作并从一开始就开始工作。

是否有一种方法可以防止这种情况发生,方法是优先选择CPU利用率最低的豆荚,以便首先缩小CPU利用率?这样,那些正在加工的吊舱就会不动了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68068830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档