Kubernetes探测器配置中的周期秒是否从上次探测时间或上次响应/故障时间算起?
例如,假设我有一个pod,它以5秒的超时时间和10秒的周期对其liveness探测器执行GET请求。以下哪一条时间线代表探测的时间 自上次探测模式以来:Kubernetes探测器配置中的周期秒是否从上次探测时间或上次响应/故障时间算起?,kubernetes,Kubernetes,例如,假设我有一个pod,它以5秒的超时时间和10秒的周期对其liveness探测器执行GET请求。以下哪一条时间线代表探测的时间 自上次探测模式以来: 0s: liveness probe initiated 5s: liveness probe times out 10s: liveness probe initiated again because 10 seconds have elapsed since the start of the last probe 或自超时模式: 0s:
0s: liveness probe initiated
5s: liveness probe times out
10s: liveness probe initiated again because 10 seconds have elapsed since the start of the last probe
或自超时模式:
0s: liveness probe initiated
5s: liveness probe times out
15s: 10 seconds have elapsed since the timeout occurred, so the probe fires again
在前者中,探测之间总是有10秒,但在后者中,探测之间可能有10到15秒,这取决于请求返回的速度。Kubernetes使用哪种方法?根据Kubernetes文件- kubelet在容器启动后的“x”秒(即周期)开始执行运行状况检查。这意味着探测已经通过,一旦从api调用本身获得成功响应,周期将开始,最终这意味着容器已经启动(前提是探测中提到的针对端点的HTTP方法已经正确编写)
对于失败的情况,很明显,在超时之前,它将等待响应以标记为健康或不健康,然后它将尝试三次相同的操作,如果探测失败,它将最终重新启动容器。Kubernetes
livenessProbe
的工作原理如下:
从发送最后一个探测器的时间开始计算periodSeconds
- 永远不会有两个探测器同时运行,如果探测器尚未超时,则会有一个新的探测器等待
timeoutSeconds=5
,periodSeconds=10
),探测将如下所示:
0s: liveness probe initiated
5s: liveness probe times out
10s: liveness probe initiated again because 10 seconds have elapsed since the start of the last probe
0s: liveness probe initiated
10s: liveness probe times out
10s: liveness probe initiated again
如果您的情况正好相反(timeoutSeconds=10
,periodSeconds=5
),那么探测将如下所示:
0s: liveness probe initiated
5s: liveness probe times out
10s: liveness probe initiated again because 10 seconds have elapsed since the start of the last probe
0s: liveness probe initiated
10s: liveness probe times out
10s: liveness probe initiated again