使长时间计算的 kubernetes 作业从节点故障中恢复



我正在设置一个包含大量长计算作业的 kubernetes 集群,所有这些作业都是单副本。通常,进程崩溃是因为 1) 容器崩溃,或 2) 节点由于某些硬件故障而失败。我希望能够从这些崩溃中恢复过来,因为它们通常需要数周才能完成。

我可以通过使用emptyDir轻松地从类型 1 的故障中恢复,并将中间检查点写入/emptydir/checkpoint.txt,即每个 Pod 的本地检查点。但是,我不清楚如何从节点故障中恢复。

我有一个所有节点都可以访问的集中式 NFS;但是,为每个作业提供唯一的 NFS 路径(我有很多)非常痛苦。我在想也许每个 Pod 都应该将检查点写入 NFS 上的某个随机路径,并在 Pod 失败时以某种方式将此随机路径传达给下一个 Pod。有什么方法可以让 Pod 在失败时向其成功传达任何内容?这是要走的路吗?

请保持简单,我对 kubernetes 很陌生。

谢谢!

不幸的是,Kubernetes 没有提供任何功能来以某种方式在当前版本的 Pod 和下一个版本之间进行通信。

我看到了 2 种如何实施路径保存过程的方法:

  1. 使用第三方一致性存储(如 Consul 或 Etcd)来存储有关随机生成的路径的信息。

  2. 在开始作业之前,使用 NFS 中的路径生成配置映射。ConfigMap 将在 NFS 中包含静态路径,第一个容器和恢复的容器的静态路径相同。

最新更新