我有一个关于状态探测的问题。当我阅读文档时,我了解到它主要用于需要很长时间才能启动的应用程序(如遗留应用程序)。因此,为了不杀死应用程序(运行它的容器),我们将启动探测设置为例如 5 分钟,以便应用程序有时间能够启动。我的问题是:为什么我们不能设置一个活性探针?我们可以使用 initialDelaySeconds 参数并将其值设置为 300 秒?
谢谢您的回答
我有一个关于状态探测的问题。当我阅读文档时,我了解到它主要用于需要很长时间才能启动的应用程序(如遗留应用程序)。因此,为了不杀死应用程序(运行它的容器),我们将启动探测设置为例如 5 分钟,以便应用程序有时间能够启动。我的问题是:为什么我们不能设置一个活性探针?我们可以使用 initialDelaySeconds 参数并将其值设置为 300 秒?
谢谢您的回答
请注意kubernetes 文档中给出的示例:
livenessProbe:
httpGet:
path: /healthz
port: liveness-port
failureThreshold: 1
periodSeconds: 10
startupProbe:
httpGet:
path: /healthz
port: liveness-port
failureThreshold: 30
periodSeconds: 10
这里两个探针之间的主要区别不是延迟,而是容错。对于启动探测,预计应用程序启动缓慢......有时。但大多数时候它实际上可能已经足够快了!
因此启动探测尝试 30 次,每次尝试之间等待 10 秒,并认为它的工作在第一次成功时完成,之后立即将令牌传递给 liveness probe 。
使用您的方法,即使应用程序已经启动,在300 秒过去之前不会触发第一个活性探测- 无论应用程序实际上是否需要约 300 秒才能启动。
当然,对于总是需要大量启动时间的应用程序,这种方法可能是有意义的。