1

我基本上是在寻找类似于初始化容器的机制,但需要注意的是,我希望它在 pod 准备好后运行(例如响应 readinessProbe)。是否有任何钩子可以应用于 readinessProbe,以便它可以在第一次成功探测后触发作业?

提前致谢

4

3 回答 3

0

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

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

于 2019-09-25T06:20:02.767 回答
0

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

例如

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

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

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

于 2019-09-25T07:15:10.373 回答
0

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

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

  2. 如果初始化任务仅在 pod 准备好后运行至关重要,或者如果您希望任务不浪费时间失败和退避几次,那么您仍然应该将该任务作为作业运行,但这次让它监视 pod使用 k8s api 并在 pod 准备好后立即执行任务。

于 2021-07-31T00:38:18.290 回答