initialDelaySeconds 的默认值是多少?

27

对于Pod(Deployment)的Kubernetes存活检测和就绪检测,可以使用此初始延迟进行配置——这意味着探针将在容器启动后多少秒后开始。如果未指定,则默认值是多少?我似乎找不到它。文档记录了periodSeconds的默认值为10秒。

谢谢


2
InitialDelaySeconds 是 0 - Shahriar
如果这个值为0,存活性检查很容易失败,因为服务通常需要时间才能启动。当存活性检查失败时,容器将被重新启动。存活性检查会再次失败,导致容器再次重启。但是我们的服务似乎没有设置initialDelaySeconds,这种情况并不会发生。我们的服务肯定需要几秒钟才能启动。 - RyanDing
我搜索了Kubernetes源代码,但似乎找不到当它未设置时如何处理的方法。 - RyanDing
2
如果未指定,则默认值为零。因为当将json/yaml解组为go结构时,如果您未设置,则它将为零。 - Shahriar
@RyanDing,等待0秒后将执行3次探测,然后等待10秒。因此,如果您的应用程序在30秒内处于活动状态,则存活性探针将成功。 - IPP Nerd
3个回答

45

看起来文档中缺少默认值为0

健康或就绪检查算法如下:

  1. 等待initialDelaySeconds
  2. 执行就绪检查并等待timeoutSeconds超时
  3. 如果连续成功的次数大于successThreshold,返回success
    如果连续失败的次数大于failureThreshold,返回failure
    否则等待periodSeconds,并开始新的就绪检查

3
看起来文档链接失效了。这是带有默认值的当前文档:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes - Dustin

21

考虑到项目变化的速度,我希望确保代码确实反映了这一点。

在公共 Kubernetes 存储库中找到了一个测试,用于验证探测的默认设置:

    expectedProbe := v1.Probe{
        InitialDelaySeconds: 0,
        TimeoutSeconds:      1,
        PeriodSeconds:       10,
        SuccessThreshold:    1,
        FailureThreshold:    3,
    }

请查看 TestSetDefaultProbe 方法,位于

https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/core/v1/defaults_test.go


1

根据当前的文档,initialDelaySeconds的默认值为0

参考资料 - 文档

enter image description here


文档还说,如果初始延迟小于周期,则会忽略初始延迟:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes“如果 periodSeconds 的值大于 initialDelaySeconds,则会忽略 initialDelaySeconds。” - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接