【问题标题】:pod crashed find what job it was doing, and how to assign same job to another pod [closed]吊舱崩溃了找到它正在做的工作,以及如何将相同的工作分配给另一个吊舱[关闭]
【发布时间】:2022-01-21 20:43:19
【问题描述】:

我的 pod 正在处理一些工作(对某些文件进行一些处理),假设其中一个 pod 卡住或崩溃,是为了找出 pod 正在处理的文件并保存 pod 处理过的数据直到 pod 崩溃并杀死 pod 并再次将作业分配给新的 pod。我们已经知道哪个吊舱崩溃了。有哪些方法可以实现?

【问题讨论】:

    标签: kubernetes kubernetes-pod


    【解决方案1】:

    通常工作负载的可恢复性和工作负载的持久性是 Kubernetes 不关心的,是开发者的负担。

    例如,如果您想恢复您的工作,那么在开始对文件进行任何工作之前,您应该将文件名保存到某个外部数据库中。这样如果你的作业在处理单个文件的过程中失败了,你可以知道它已经开始处理哪个文件,但还没有完成,然后你可以在其他 Pod 中重做这个文件。

    示例工作流程可能如下所示:

    • 开始处理
    • 检查数据库是否有任何文件已开始处理,但正在处理的 Pod 不再存在
    • 如果有此类文件,请将它们作为当前处理该文件的受让人将 Pod 名称输入表中
    • 处理完所有此类文件后,继续处理常规文件
    • 开始处理常规文件
    • 将文件名和当前正在处理的 Pod 的名称写入数据库
    • 如果成功从数据库中删除条目

    现在这是一个非常跨领域和框架化的问题需要处理,通常这些恢复和检查的步骤是由框架完成的。如果您正在使用 Java,那么我会推荐 Spring Batch 框架

    【讨论】:

    • 虽然我们可以得到文件名,但是如何保存它处理过的数据直到它失败或者卡住
    • 您必须将其保存到一些持久性解决方案中,例如数据库或共享挂载卷。
    猜你喜欢
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 2016-10-22
    • 2020-12-08
    • 1970-01-01
    • 2020-08-07
    相关资源
    最近更新 更多