kubernetes - 调用 helm install 时 Celery 任务停止

标签 kubernetes celery hook celery-task celerybeat

我有一个在 kubernetes 上运行的 Web 服务器和 celery Beat Worker。 在部署中,我调用此命令 -

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

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

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

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

Helm 升级.....-安装

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

最佳答案

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

关于kubernetes - 调用 helm install 时 Celery 任务停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55334885/

相关文章:

redis - 将 Celery 任务直接插入 Redis

macos - 在 Mac OS X 中获取进程创建通知

checkstyle 的 svn 预提交钩子(Hook)

go - 如何使用代码生成器生成自定义资源定义的代码

kubernetes - 如何跟踪 pod 等待开始的时间?

azure - 如何为 Azure 上的 Kubernetes 集群中运行的 Grafana 安装自定义插件

memory-management - 为所有 Pod 全局分配每个 Pod UUID/唯一 ID

docker - Helm的Tiller容器获得x509:未知授权机构签署的证书

django - 使用 RabbitMQ 的 Amazon Elastic Beanstalk 上的 Celery 超时异常

python - 如何将 pymysql 与 gevent 和 django-celery 一起使用?