【问题标题】:Kubernetes default liveness and readiness probeKubernetes 默认的 liveness 和 readiness 探针
【发布时间】:2019-05-18 13:04:13
【问题描述】:

我想知道 kubernetes 在默认情况下检查 pod 和容器的活跃度和准备情况。

我可以找到文档,其中提到了如何添加自定义探针并更改初始延迟等探针参数。但是,找不到 k8s 使用的默认探针方法。

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    默认情况下,Kubernetes 会在 Pod 内的所有容器启动时开始向 Pod 发送流量,并在容器崩溃时重新启动容器。虽然在您刚开始时这可以是 good enough,但您可以通过创建自定义运行状况检查来使您的部署更加健壮。

    默认情况下,Kubernetes 只会检查 pod 内的容器是否已启动并开始发送流量。默认情况下,kubernetes 不提供就绪或活跃度检查。

    就绪探测

    假设您的应用需要一分钟预热和启动。即使进程已经启动,您的服务也要等到它启动并运行后才能工作。如果您想扩展此部署以拥有多个副本,您也会遇到问题。新副本在完全准备好之前不应接收流量,但默认情况下,Kubernetes 会在容器内的进程启动后立即开始向其发送流量。通过使用readiness probe,Kubernetes 会等到应用程序完全启动后才允许服务将流量发送到新副本。

    活性探针

    让我们想象另一种情况,您的应用出现令人讨厌的死锁情况,导致它无限期挂起并停止处理请求。因为进程继续运行,默认情况下 Kubernetes 认为一切正常,并继续向损坏的 Pod 发送请求。通过使用 liveness probe,Kubernetes 检测到应用程序不再为请求提供服务并重新启动有问题的 pod。

    【讨论】:

    • 虽然解释什么是健康探测很棒 - 它实际上并没有回答问题。
    【解决方案2】:

    TL/DR:没有默认的就绪探测(“我应该发送这个 pod 流量吗?”),默认的活跃度探测(“我应该杀死这个 pod 吗?”)只是容器是否仍在运行。

    【讨论】:

      【解决方案3】:

      Kubernetes 不会自己做任何事情。您将不得不决定活力和准备对您意味着什么。您可以执行多种操作,例如,HTTP 获取请求、发出命令或连接端口。如何确保用户满意且一切正常运行,由您决定。

      【讨论】:

        猜你喜欢
        • 2018-02-11
        • 2020-12-13
        • 1970-01-01
        • 2023-01-30
        • 1970-01-01
        • 1970-01-01
        • 2020-02-05
        • 2020-12-26
        • 1970-01-01
        相关资源
        最近更新 更多