我有一组有状态的容器,由于它们的状态性质,由于某些状态错误(无法删除它)而无法重新创建其中的一个容器。
因为它是有状态的,所以kubernetes会阻止其他Pod的创建,直到它能够使被卡住的Pod运行为止。 Statefulsets具有podManagementPolicy:“ Parallel”,但不能在运行时更改。
问题是,是否有办法让kubernetes跳过卡住的那个?
答案 0 :(得分:1)
我相信您正在为已知的issue仍处于开放状态的WA寻找WA
StatefulSet将继续等待坏掉的Pod就绪(这永远不会发生),然后再尝试将其恢复为工作状态。
在升级方面,以下git hub在official doc上发现了这一点
StatefulSet中的Pod以相反的顺序更新。 StatefulSet控制器终止每个Pod,并在更新下一个Pod之前等待其转换为Running和Ready。
请注意,即使StatefulSet控制器在其顺序后继程序运行并准备就绪之前不会继续更新下一个Pod,它仍将在更新过程中失败的所有Pod恢复到当前版本。已收到更新的Pod将还原为更新的版本,而尚未收到更新的Pod将还原为先前的版本。这样,在出现间歇性故障的情况下,控制器会尝试继续保持应用程序的健康和更新的一致性。
当使用具有默认Pod管理策略(OrderedReady)的滚动更新时,可能会进入需要人工干预才能修复的损坏状态。