我试图在Kubernetes中建立一个有状态的Apache Flink应用程序,并且在发生中断(例如有人删除pod或由于群集大小调整而对其进行重新安排)的情况下,需要保存当前状态。
我在容器中添加了一个preStop挂钩来完成此行为,但是当我使用kubectl delete pod
删除Pod时,它会在旧Pod终止之前旋转一个新Pod。
诸如this one之类的指南使用“重新创建”更新策略来确保一次仅运行一个pod。在更新部署的情况下,此方法可以很好地工作,但不能涵盖我上面所述的中断。我还尝试将spec.strategy.rollingUpdate.maxSurge
设置为0,但这没什么区别。
是否可以这样配置我的部署,使得在终止另一个Pod之前没有
答案 0 :(得分:0)
我同意@Cosmic Ossifrage,因为StatefulSets可以轻松实现您的目标。 StatefulSets
中的每个Pod均具有Kubernetes Engine维护的唯一,持久的身份和稳定的主机名,无论它们在何处进行调度。
因此,假设Kubernetes StatefulSet控制器每次也完全删除了前一个Pod后,StatefulSets
将按顺序部署并以反序终止。