在出现故障的情况下在启动新的Kubernetes Pod之前将其强制关闭

时间:2018-09-04 11:35:48

标签: kubernetes

我试图在Kubernetes中建立一个有状态的Apache Flink应用程序,并且在发生中断(例如有人删除pod或由于群集大小调整而对其进行重新安排)的情况下,需要保存当前状态。

我在容器中添加了一个preStop挂钩来完成此行为,但是当我使用kubectl delete pod删除Pod时,它会在旧Pod终止之前旋转一个新Pod。

诸如this one之类的指南使用“重新创建”更新策略来确保一次仅运行一个pod。在更新部署的情况下,此方法可以很好地工作,但不能涵盖我上面所述的中断。我还尝试将spec.strategy.rollingUpdate.maxSurge设置为0,但这没什么区别。

是否可以这样配置我的部署,使得在终止另一个Pod之前没有 ever 启动,或者我需要切换到StatefulSets?

1 个答案:

答案 0 :(得分:0)

我同意@Cosmic Ossifrage,因为StatefulSets可以轻松实现您的目标。 StatefulSets中的每个Pod均具有Kubernetes Engine维护的唯一,持久的身份和稳定的主机名,无论它们在何处进行调度。

因此,假设Kubernetes StatefulSet控制器每次也完全删除了前一个Pod后,StatefulSets将按顺序部署并以反序终止。