3

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

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 分钟以上的启动机会。

4

3 回答 3

6

是的,startupProbe在 1.16 中引入的——所以你不能在 Kubernetes 1.12 中使用它。

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

于 2019-10-16T12:18:50.440 回答
0

如果您有一个探针,您可以指定initialDelaySeconds并使其成为一个足以让您的容器启动的大值。

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

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

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

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

于 2019-11-20T22:01:28.510 回答
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 }}
于 2021-02-18T11:42:14.083 回答