【发布时间】:2018-08-22 21:37:38
【问题描述】:
如果您在 StatefulSet 规范中修补镜像名称,Kubernetes StatefulSet (v1.8) 将自动将其管理的 pod 滚动到新镜像——毕竟,编排这种更新是它的主要工作之一。但是,如果在镜像拉取步骤中部署修改后的镜像失败(例如,镜像名称中有拼写错误,因此没有要拉取的镜像),它尝试使用新镜像重新启动的第一个 pod 会卡在ImagePullBackOff 状态和翻转停止。没关系,这几乎是您想要和期望的。但是,如果您随后再次修补 StatefulSet 规范以纠正错误,则该 set 不会被修复 - 它只是处于损坏状态 - 直到您(手动)删除失败的 pod,此时一切都按原样进行一切都会恢复到健康的状态。
我认为应该有一种配置方法,以便在更新映像名称时自动进行这种恢复,就像正常部署一样,而不需要手动干预(尤其是因为这是为了一个 CI 类型的应用程序,无论如何这一切都需要自动化)。我不禁觉得我只是没有在文档中找到正确的选项,但是仔细研究文档并进行无休止的 Google 搜索并没有发现成功的秘诀。有没有办法将这种恢复配置为自动发生,如果是这样,它是什么?
如果做不到这一点,是否有一种优雅的方法可以自动检测失败状态,以触发对失败 pod 的脚本删除? 我尝试过的所有东西看起来都很笨拙,有很多轮询和临时超时,所以我很难相信这是正确的做法。
【问题讨论】:
标签: kubernetes statefulset error-recovery