Kubernetes-在pod状态就绪后运行作业

时间:2019-09-25 04:32:54

标签: kubernetes kubernetes-jobs readinessprobe

我基本上是在寻找一种机械警告来初始化带有警告的容器,我希望它在pod准备好之后运行(例如,响应readinessProbe)。是否可以将任何挂钩应用于readinessProbe,以便在第一次成功完成探测后可以触发作业?

预先感谢

3 个答案:

答案 0 :(得分:0)

如果我错了,请纠正我,但是您想在容器准备好后运行作业。

定义作业时,它将在容器准备就绪时运行。您到底想执行什么?

答案 1 :(得分:0)

您可以使用一些短生命周期挂钩来挂起或说出容器。

例如

lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "echo In postStart > /dev/termination-log"]

它是postStart钩子,所以我认为它会起作用。

但是Post钩子是异步函数,因此一旦容器启动,它就会在触发容器的入口点之前的某个时间被触发。

答案 2 :(得分:0)

我认为现在 vanilla k8s 中没有任何东西可以实现这一点。但是,有 2 个选项可以解决此问题:

  1. 如果可以多次重试初始化任务直到它成功,那么我将在您要初始化的 pod 的同时将任务作为作业启动。这是最简单的选择,但由于指数退避可能会有点慢。

  2. 如果初始化任务只在 pod 准备好后运行很重要,或者如果你不希望任务浪费时间失败和退避几次,那么你仍然应该将该任务作为作业运行,但是这是时候让它使用 k8s api 观察有问题的 pod,并在 pod 准备好后立即执行任务。