【发布时间】:2018-09-17 19:10:29
【问题描述】:
我正在尝试在 Kubernetes 中设置一个有状态的 Apache Flink 应用程序,我需要保存当前状态以防出现中断,例如有人删除 pod 或由于集群调整大小而重新安排它。
我为完成此行为的容器添加了一个 preStop 挂钩,但是当我使用 kubectl delete pod 删除一个 pod 时,它会在旧的 Pod 终止之前启动一个新的 Pod。
this one 等指南使用重新创建更新策略来确保一次只运行一个 pod。这在更新部署的情况下可以正常工作,但它不包括我上面描述的中断。我也尝试将spec.strategy.rollingUpdate.maxSurge 设置为 0,但这没有任何区别。
是否可以将我的部署配置为在另一个 pod 终止之前永远不会启动,还是我需要切换到 StatefulSets?
【问题讨论】:
-
我会切换到 StatefulSets。您提出的用例是他们很好解决的用例之一。
-
@Sander,如果发生中断,您希望保存什么样的当前状态?
-
@mk_sta Apache Flink 能够创建可以继续的保存点,但是该过程显然应该在另一个 pod 启动之前完成
-
你是如何在集群中的 Pod 之间共享保存点的?
-
它们被写入 GCS,为什么?
标签: kubernetes