进行长计算kubernetes作业从节点故障中恢复

时间:2018-04-11 08:13:46

标签: kubernetes cluster-computing disaster-recovery

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

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

我有一个可由所有节点访问的集中式NFS;但是,为每个作业提供一个独特的NFS路径是很痛苦的(我有很多)。我想也许每个Pod都应该将检查点写入NFS上的某个随机路径,并以某种方式将此随机路径传递给Pod故障时的下一个Pod。有没有什么方法可以让Pod在失败时通信任何事情?这是要走的路吗?

请保持简单,我对kubernetes很新。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

我看到了两种如何实现路径保存程序的方法:

  1. 使用第三方一致性存储空间(如ConsulEtcd)存储有关随机生成路径的信息。

  2. 在开始工作之前,使用NFS中的路径生成ConfigMap。 ConfigMap将在NFS中包含一个静态路径,对于第一个容器和已恢复的容器,它将是相同的。