【问题标题】:Skipping a pod deployment in statefulset在 statefulset 中跳过 pod 部署
【发布时间】:2020-02-02 17:29:41
【问题描述】:
我有一组有状态的 pod,由于它们的有状态性质,其中一个无法重新创建,因为某些状态错误导致删除它无济于事。
由于它是一个有状态的集合,kubernetes 将阻止创建额外的 Pod,直到它能够让卡住的 Pod 运行。
Statefulsets 有 podManagementPolicy: "Parallel" 但不能在运行时更改。
问题是有没有办法让 kubernetes 跳过卡住的那个?
【问题讨论】:
标签:
kubernetes
kubernetes-statefulset
【解决方案1】:
我相信你正在寻找一个已知的issue 的 WA,它仍然是开放的
StatefulSet 将继续等待损坏的 Pod 变为 Ready(这永远不会发生),然后再尝试将其恢复到工作配置。
在升级方面,从official doc 下方的git hub 上发现了这个
StatefulSet 中的 Pod 以相反的顺序更新。 StatefulSet 控制器终止每个 Pod,并在更新下一个 Pod 之前等待它转换为 Running 和 Ready。
请注意,即使 StatefulSet 控制器不会继续更新下一个 Pod,直到其序号后继者处于 Running 和 Ready 状态,它也会将在更新期间失败的任何 Pod 恢复到其当前版本。已经收到更新的 Pod 会恢复到更新的版本,尚未收到更新的 Pod 会恢复到之前的版本。通过这种方式,控制器会尝试在出现间歇性故障的情况下继续保持应用程序的健康和更新的一致性。
阅读Forced Rollback
在使用带有默认 Pod 管理策略 (OrderedReady) 的滚动更新时,可能会进入需要人工干预才能修复的损坏状态。