Kubernetes探测器配置中的周期秒是否从上次探测时间或上次响应/故障时间算起?

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:

例如,假设我有一个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: 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