在v1.12中增加k8s容器的启动阈值

时间:2019-10-16 11:40:05

标签: kubernetes kubernetes-pod kubernetes-container

按照文档here,我可以像这样设置容器启动的阈值:

startupProbe:
  httpGet:
    path: /healthz
    port: liveness-port
  failureThreshold: 30
  periodSeconds: 10

不幸的是,似乎startupProbe.failureThreshold与我们当前的k8s版本(1.12.1)不兼容:

unknown field "startupProbe" in io.k8s.api.core.v1.Container; if you choose to ignore these errors, turn validation off with --validate=false

是否有解决方法?我想给一个容器大约40分钟以上的启动时间。

3 个答案:

答案 0 :(得分:3)

是的,startupProbeintroduced with 1.16-所以您不能在Kubernetes 1.12上使用它。

我猜您正在定义livenessProbe-因此解决问题的最简单方法是删除livenessProbe。大多数应用程序不需要一个(某些应用程序甚至不需要readinessProbe)。另请参见这篇出色的文章:Liveness Probes are Dangerous

答案 1 :(得分:0)

如果您有探针,则可以指定initialDelaySeconds并将其设为足以启动容器的较大值。

如果您根本不关心探针,则可以让它执行永远不会失败的命令,例如whoami

从下面的示例中获取所需的内容:

readinessProbe:
  exec:
    command:
    - whoami
  initialDelaySeconds: 2400
  periodSeconds: 5

如果需要livenessProbe,可以进行相同的配置。

答案 2 :(得分:0)

我知道这不是这个问题的答案,但可能很有用...

“startupProbes”随 k8s 1.16+ 一起提供。

如果你要起诉 helm,你可以在你的模板中用这个包围你的块 startupProbes:

{{- if (semverCompare ">=1.16-0" .Capabilities.KubeVersion.GitVersion) }}
startupProbe:
  httpGet:
    path: /healthz
    port: liveness-port
  failureThreshold: 30
  periodSeconds: 10
{{- end }}