【问题标题】:How kubernetes handle livenessProbe failure?Kubernetes 如何处理 livenessProbe 失败?
【发布时间】:2020-09-26 19:52:02
【问题描述】:

我想了解如果 kubernetes 中的活性探测失败,幕后会发生什么?

这里是上下文:

我们正在使用 Helm Chart 在 Kubernetes 集群中部署应用程序。

我们有 statefulsets 和 headless 服务。为了初始化 mTLS,我们创建了一个 'job' 类型,并且在 'command' 中我们传递 shell 和 python 脚本是一个参数。

我们在 'docker image' 中编写了一个 'docker-entrypoint.sh' 用于一些初始化工作。

在 statefulSet 中,我们将一个 shell 脚本作为命令传递给 'livenessProbe',它每 30 秒运行一次。

我想知道我的 livenessProbe 是否因任何原因失败: 1. helm chart 是否监控此探针并重新启动容器还是由 K8s 负责? 2. 如果容器重新启动,我的 'docker-entryPoint.sh' 会执行吗? 3. 'Job' 会在容器重启时执行吗?

Kubernetes 如何处理 livenessProbe 故障以及它需要采取哪些步骤?

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:
    1. 这不是 helm 的责任。kubernetes 有责任在就绪探测失败的情况下重新启动 pod。
    2. docker-entryPoint.sh 在容器启动时执行。
    3. 作业需要再次应用到集群才能执行。或者,您可以使用initcontainer,它保证在主容器启动之前运行。
    4. 如果 liveness 探测失败,Kubelet 会杀死容器并重新启动它。

    【讨论】:

    • 说得对。 Kubernetes 或主要是 Kubelet 使用 liveliness probe 来检查容器何时重启,以防出现问题。
    • 感谢@Arghya 的回复。在第 2 点:你的意思是重启吗?
    • 在 kubernetes 中容器的启动和重启在技术上是相同的
    【解决方案2】:

    要回答您的问题,liveness probe 和 readiness probe 基本上是调用您的应用程序 pod 以检查它是否健康的操作。 这与掌舵图无关。 一旦 liveness 或 readiness 探测失败,容器就会重新启动。 我想说这些活性探测失败会影响您的应用正常运行时间,因此请使用滚动部署并自动扩展您的 pod 数量以启用可用性。

    【讨论】:

      猜你喜欢
      • 2017-11-06
      • 2020-02-11
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 2021-12-22
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多