处理K8s在完成运行任务之前强行杀死celery pods

问题描述 投票:0回答:1

我正在 AWS EKS 上使用 Celery Workers 部署 Django 应用程序。我的一切都按预期运行,除了 K8s 在完成正在进行的任务之前继续停止 Celery 工作副本之外,在进行新部署或将新代码推送到主分支时,我也有相同的行为。

我尝试过的:

  • 设置一个非常大的宽限期,这个解决方案不起作用,因为我们有运行几个小时的任务。
  • 设置 preStop 钩子,这个解决方案也不起作用,因为如果超过宽限期,K8s 不会等待钩子完成。
  • 我也尝试过固定副本数,但这显然不是一个解决方案。

更多信息: 我将 celery 设置为 Redis 作为消息代理和结果后端。经过一番研究后,我开始考虑使用 Keda,但在阅读文档后,似乎它只允许我根据队列长度扩展 Celery pod,但没有提供我正在寻找的终止机制。

有什么解决方法可以解决这个问题吗?

django kubernetes celery
1个回答
0
投票

我最终设置了一个非常长的宽限期; 5小时

© www.soinside.com 2019 - 2024. All rights reserved.