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

Kubernetes 增加v1.12中k8s容器的启动阈值,kubernetes,kubernetes-pod,kubernetes-container,Kubernetes,Kubernetes Pod,Kubernetes Container,根据文档,我可以设置容器启动的阈值,如下所示: startupProbe: httpGet: path: /healthz port: liveness-port failureThreshold: 30 periodSeconds: 10 不幸的是,startupProbe.FailureReshold似乎与我们当前的k8s版本(1.12.1)不兼容: 有解决办法吗?我想给一个容器40多分钟的启动时间。是的,startupProbe是-因此您不能将其用于Kuber

根据文档,我可以设置容器启动的阈值,如下所示:

startupProbe:
  httpGet:
    path: /healthz
    port: liveness-port
  failureThreshold: 30
  periodSeconds: 10
不幸的是,
startupProbe.FailureReshold
似乎与我们当前的k8s版本(1.12.1)不兼容:


有解决办法吗?我想给一个容器40多分钟的启动时间。

是的,
startupProbe
是-因此您不能将其用于Kubernetes 1.12


我猜您正在定义一个
livenessProbe
——因此解决问题的最简单方法是删除
livenessProbe
。大多数应用程序都不需要(有些甚至不需要
readinessProbe
)。另请参阅这篇优秀的文章:.

如果您有一个探测器,您可以指定
initialDelaySeconds
并将其设置为某个大值,该值足以让您的容器启动

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

从下面的示例中获取您需要的信息:

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

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

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

“StartupProbe”附带k8s 1.16+

如果您起诉helm,您可以在模板中使用以下内容包围您的block StartupProbe:

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

如何完全禁用它?所有文档都在处理调整,只是从YAML/JSONI中删除元素似乎无法取消探测。我怀疑我们的群集管理员可能设置了默认值,可能是有一个准入控制器添加了这个。您是否尝试过删除“livenessProbe”(和子元素)或设置livenessProbe:{}我在GKE上。看起来Google云平台目前只支持v1.14,因此不支持startupProbe。
{{- if (semverCompare ">=1.16-0" .Capabilities.KubeVersion.GitVersion) }}
startupProbe:
  httpGet:
    path: /healthz
    port: liveness-port
  failureThreshold: 30
  periodSeconds: 10
{{- end }}