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