【发布时间】:2022-01-21 20:43:19
【问题描述】:
我的 pod 正在处理一些工作(对某些文件进行一些处理),假设其中一个 pod 卡住或崩溃,是为了找出 pod 正在处理的文件并保存 pod 处理过的数据直到 pod 崩溃并杀死 pod 并再次将作业分配给新的 pod。我们已经知道哪个吊舱崩溃了。有哪些方法可以实现?
【问题讨论】:
我的 pod 正在处理一些工作(对某些文件进行一些处理),假设其中一个 pod 卡住或崩溃,是为了找出 pod 正在处理的文件并保存 pod 处理过的数据直到 pod 崩溃并杀死 pod 并再次将作业分配给新的 pod。我们已经知道哪个吊舱崩溃了。有哪些方法可以实现?
【问题讨论】:
通常工作负载的可恢复性和工作负载的持久性是 Kubernetes 不关心的,是开发者的负担。
例如,如果您想恢复您的工作,那么在开始对文件进行任何工作之前,您应该将文件名保存到某个外部数据库中。这样如果你的作业在处理单个文件的过程中失败了,你可以知道它已经开始处理哪个文件,但还没有完成,然后你可以在其他 Pod 中重做这个文件。
示例工作流程可能如下所示:
现在这是一个非常跨领域和框架化的问题需要处理,通常这些恢复和检查的步骤是由框架完成的。如果您正在使用 Java,那么我会推荐 Spring Batch 框架
【讨论】: