需要在不删除的情况下升级 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?

  1. 我知道helm install -n new_release_name chart_path会给我一套新的celery worker;但是,由于某些限制,我无法在新版本中部署 pods。
  2. 我尝试了 运行 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