【问题标题】:Kubernetes StatefulSet pod startup error recoveryKubernetes StatefulSet pod 启动错误恢复
【发布时间】:2018-08-22 21:37:38
【问题描述】:

如果您在 StatefulSet 规范中修补镜像名称,Kubernetes StatefulSet (v1.8) 将自动将其管理的 pod 滚动到新镜像——毕竟,编排这种更新是它的主要工作之一。但是,如果在镜像拉取步骤中部署修改后的镜像失败(例如,镜像名称中有拼写错误,因此没有要拉取的镜像),它尝试使用新镜像重新启动的第一个 pod 会卡在ImagePullBackOff 状态和翻转停止。没关系,这几乎是您想要和期望的。但是,如果您随后再次修补 StatefulSet 规范以纠正错误,则该 set 不会被修复 - 它只是处于损坏状态 - 直到您(手动)删除失败的 pod,此时一切都按原样进行一切都会恢复到健康的状态。

我认为应该有一种配置方法,以便在更新映像名称时自动进行这种恢复,就像正常部署一样,而不需要手动干预(尤其是因为这是为了一个 CI 类型的应用程序,无论如何这一切都需要自动化)。我不禁觉得我只是没有在文档中找到正确的选项,但是仔细研究文档并进行无休止的 Google 搜索并没有发现成功的秘诀。有没有办法将这种恢复配置为自动发生,如果是这样,它是什么?

如果做不到这一点,是否有一种优雅的方法可以自动检测失败状态,以触发对失败 pod 的脚本删除? 我尝试过的所有东西看起来都很笨拙,有很多轮询和临时超时,所以我很难相信这是正确的做法。

【问题讨论】:

    标签: kubernetes statefulset error-recovery


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 2017-06-19
      • 1970-01-01
      相关资源
      最近更新 更多