需要在不删除的情况下升级 helm chart 运行 pods
Need to upgrade helm chart without deleting already running pods
我在 minikube 中有几个 celery worker 运行,他们正在处理使用 rabbitMQ 传递的任务。最近我更新了一些芹菜工人的代码并更改了图像。当我做 helm upgrade release_name chart_path
时,所有现有的工作人员 pods 都被终止,所有未完成的任务都被放弃。我想知道是否有一种方法可以在不终止旧 pods 的情况下升级 helm chart?
- 我知道
helm install -n new_release_name chart_path
会给我一套新的celery worker;但是,由于某些限制,我无法在新版本中部署 pods。
- 我尝试了 运行
helm upgrade release_name chart_path --set deployment.name=worker2
因为我认为有一个新的部署名称将阻止 helm 删除旧的 pods,但这也不起作用。
这就是 Kubernetes 部署的工作原理。您应该做的是修复您的 Celery worker 映像,以便它在实际关闭之前等待尝试完成任何挂起的任务。这应该已经是这种情况,除非你做了一些时髦的事情,以至于 SIGTERM 没有进入 Celery?有关详细信息,请参阅 https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods。
我在 minikube 中有几个 celery worker 运行,他们正在处理使用 rabbitMQ 传递的任务。最近我更新了一些芹菜工人的代码并更改了图像。当我做 helm upgrade release_name chart_path
时,所有现有的工作人员 pods 都被终止,所有未完成的任务都被放弃。我想知道是否有一种方法可以在不终止旧 pods 的情况下升级 helm chart?
- 我知道
helm install -n new_release_name chart_path
会给我一套新的celery worker;但是,由于某些限制,我无法在新版本中部署 pods。 - 我尝试了 运行
helm upgrade release_name chart_path --set deployment.name=worker2
因为我认为有一个新的部署名称将阻止 helm 删除旧的 pods,但这也不起作用。
这就是 Kubernetes 部署的工作原理。您应该做的是修复您的 Celery worker 映像,以便它在实际关闭之前等待尝试完成任何挂起的任务。这应该已经是这种情况,除非你做了一些时髦的事情,以至于 SIGTERM 没有进入 Celery?有关详细信息,请参阅 https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods。