Kubernetes StatefulSet吊舱启动错误恢复

Kubernetes StatefulSet吊舱启动错误恢复,kubernetes,statefulset,error-recovery,Kubernetes,Statefulset,Error Recovery,如果在StatefulSet规范中修补映像名称,Kubernetes StatefulSet(v1.8)将自动将它正在管理的POD滚动到新映像上——毕竟,协调此类更新是它的主要工作之一。但是,如果在图像拉取步骤部署修改后的图像失败(例如,图像名称中有一个输入错误,因此没有图像可拉),则它尝试重新启动的第一个pod将在图像拉取状态中卡住,翻转停止。那很好,这正是你想要和期望的。但是,如果您随后再次修补StatefulSet规范以纠正错误,则该集不会得到修复——它只是处于损坏状态——直到您(手动)删

如果在StatefulSet规范中修补映像名称,Kubernetes StatefulSet(v1.8)将自动将它正在管理的POD滚动到新映像上——毕竟,协调此类更新是它的主要工作之一。但是,如果在图像拉取步骤部署修改后的图像失败(例如,图像名称中有一个输入错误,因此没有图像可拉),则它尝试重新启动的第一个pod将在图像拉取状态中卡住,翻转停止。那很好,这正是你想要和期望的。但是,如果您随后再次修补StatefulSet规范以纠正错误,则该集不会得到修复——它只是处于损坏状态——直到您(手动)删除失败的pod,此时一切都会正常进行,并恢复到正常状态

我认为应该有一种配置方法,以便在更新映像名称时自动进行这种恢复,就像在正常部署中一样,而不需要手动干预(特别是对于CI类型的应用程序,在这种应用程序中,所有这些都需要自动化)。我忍不住觉得我只是在文档中找不到正确的选项,但仔细研究文档和没完没了的谷歌搜索并没有发现一个成功的秘诀。有没有办法将这种恢复配置为自动进行?如果有,是什么方法

如果做不到这一点,是否有一种优雅的方法来自动检测失败状态,从而触发对失败pod的脚本删除?
我尝试过的每一件事都显得非常笨拙,有大量的投票和临时超时,所以我很难相信这是正确的方法。

我在上一篇文章中也提出了同样的问题。现在的答案是,不,没有选择,而且可能缺少文档。我们正在开始讨论,看看是否有任何方法可以改善这一点。 目前,解决办法可能依赖于投票和超时。但是,这首先取决于您如何部署StatefulSet。一些部署工具(如带有
--wait
选项的Helm)可以配置为等待所有POD运行