我基本上是在寻找类似于初始化容器的机制,但需要注意的是,我希望它在 pod 准备好后运行(例如响应 readinessProbe)。是否有任何钩子可以应用于 readinessProbe,以便它可以在第一次成功探测后触发作业?
提前致谢
我基本上是在寻找类似于初始化容器的机制,但需要注意的是,我希望它在 pod 准备好后运行(例如响应 readinessProbe)。是否有任何钩子可以应用于 readinessProbe,以便它可以在第一次成功探测后触发作业?
提前致谢
如果我错了,请纠正我,但您想在容器准备好时运行作业。
当您定义一个作业时,它将在容器准备就绪时运行。你到底想执行什么?
您可以使用一些短生命周期挂钩来 pod 或说容器。
例如
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "echo In postStart > /dev/termination-log"]
它是 postStart 钩子,所以我认为它会起作用。
但是 Post 钩子是异步函数,因此一旦容器启动,它就会在它触发的容器入口点之前的某个时间被触发。
我认为 vanilla k8s 中没有任何东西现在可以实现这一点。但是,有两种选择可以解决此问题:
如果可以多次重试初始化任务直到它成功,那么我将在您要初始化的 pod 的同时将任务作为作业启动。这是最简单的选择,但由于指数退避可能会有点慢。
如果初始化任务仅在 pod 准备好后运行至关重要,或者如果您希望任务不浪费时间失败和退避几次,那么您仍然应该将该任务作为作业运行,但这次让它监视 pod使用 k8s api 并在 pod 准备好后立即执行任务。