Pod生命周期和活跃度有什么区别?

What's the difference between Pod lifecycle and liveness?

我的pods有时会出现自动重启,但我还没有liveness。 我读到它可能是 pod 的生命周期,当你没有指定 RestartPolicy 时,默认情况下是 Always,当容器崩溃时,它会自动重启。 但是,我感到困惑,因为我认为活性应该做到这一点。由于生命周期已经这样做了,我应该使用 liveness probe 做什么?既然是两个不同的东西,那有什么区别呢?

参考 this 解释答案的文档。

如果容器中的应用程序自行崩溃,k8s 将自动重启它。如果你有一个 liveness probe,你的 POD 可能会在 liveness probe 失败时重新启动。所以在你的情况下,由于你没有活性探测,这可能是由于你的应用程序崩溃。

And as the lifecycle already do it, for what should I use the liveness probe?

假设您的应用能够进入不再执行请求但未崩溃的状态(即它仍在运行并且 运行)。例如,如果您在某处的代码中出现死锁,则可能会发生这种情况。在这种情况下,活性探测器可能会有用。探测器可以测试应用程序是否处于这种死锁状态。如果是这样,liveness 探测将失败,POD 将重新启动。

And as it is two different things, what is the difference between then?

不同之处在于您的应用是否可以进入有效关闭状态(无法正确执行请求),同时仍保持技术上的运行状态(容器中的 PID 仍为 运行) .如果您的应用程序可以进入这种状态,那么我会说活性探测是个好主意。如果您不知道该问题的答案,这也是一个好主意。如果使用活性探测器不会造成任何伤害,那么这可能是个好主意。如果没有问题,您只想避免重新启动完美的 POD。