按照文档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分钟以上的启动时间。
答案 0 :(得分:3)
是的,startupProbe
是introduced 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 }}