1

我有一个在 kubernetes 上运行的网络服务器和 celery beat worker。在部署中,我将此命令称为 -

helm upgrade X ./X --set xImageTag=$TAG,nginxImageTag=$TAG --install

Pod 正在重新启动。如果有一个正在运行的 celery 任务 - 它会在中间停止并永远丢失。有没有一种优雅的方法来防止这种情况发生?

我正在考虑:使用 pod PreStop 钩子或创建一些可以阻止任务停止的东西。

我希望即使在部署新代码和调用时任务也能继续运行

helm upgrade ..... --install.

我确定有人已经遇到过这个问题,但是我在网上找不到任何东西。谢谢!

4

1 回答 1

1

我们通过让 celery 任务以编程方式创建一个 k8s 作业来解决它。现在 celery 任务的流程是在一个 k8s 作业中执行的,不会在 helm install 中删除。celery 任务将创建一个 k8s 作业,然后死掉。以编程方式创建 k8s 作业的代码在这里:blog.pythian.com/how-to-create-kubernetes-jobs-with-python。

于 2019-04-15T07:40:49.803 回答