• Kubernetes(K8S)的三种探针



      Kubernetes中的探针(Probes)是一种用于检测和监控应用程序健康状态的机制。通过定义探针,Kubernetes 可以定期检查容器内应用程序的状态,并根据检查结果采取相应的操作,例如重启容器、从服务负载均衡中剔除等。Kubernetes 提供了三种类型的探针:

    • 存活探针(Liveness Probe)
    • 就绪探针(Readiness Probe)
    • 启动探针(Startup Probe)

    一、存活探针(Liveness Probe)

      存活探针用于检测容器内应用程序的健康状态。如果存活探针失败(即应用程序不健康),Kubernetes 将会自动重启容器,以尝试恢复应用程序的健康状态。
      对于存活探针(Liveness Probe):如果存活探针失败,Kubernetes 将自动重启容器。它会尝试将容器恢复到健康状态,并继续运行应用程序。如果存活探针失败,Kubernetes 将首先重启容器,希望通过重新启动容器来恢复应用程序的健康状态。如果重启容器仍然无法解决问题,Kubernetes 可能会根据配置的重启策略进一步采取行动。重启策略包括:

    • Always(默认):始终重启容器,无限次数地尝试恢复应用程序的健康状态。
    • OnFailure:仅在容器失败(退出状态码非零)时重启容器,尝试恢复应用程序的健康状态。
    • Never:永不重启容器,不会尝试恢复应用程序的健康状态。

    二、就绪探针(Readiness Probe)

      就绪探针用于检测容器是否已经准备好接收流量。如果就绪探针失败(即容器未准备好),Kubernetes 将会从服务负载均衡的池中剔除该容器,不会将流量路由到该容器,直到探测成功。
      对于就绪探针(Readiness Probe):如果就绪探针失败,Kubernetes 将从服务负载均衡的池中剔除该容器。这意味着新的流量将不会被路由到该容器,直到就绪探针成功为止。这可以确保只有健康的容器能够接收流量,避免将流量发送到尚未准备好的容器上。一旦就绪探针成功,Kubernetes 将再次将容器纳入服务负载均衡,并开始将新的流量路由到该容器。

    三、启动探针(Startup Probe)

      启动探针用于检测容器内应用程序是否已经启动成功。与存活探针和就绪探针不同,启动探针仅在容器启动时执行,并且只需检测一次。启动探针的结果不会影响容器的重启或负载均衡。它主要用于检测应用程序是否成功启动,并在启动过程中提供一定的等待时间。
      如果启动探针失败,Kubernetes 不会采取任何特殊行动。这是因为启动探针失败只意味着应用程序尚未成功启动,并且不会触发容器的重启或负载均衡操作。

    四、探针定义方式

    • 执行命令(Exec):通过在容器内执行特定的命令来检查应用程序的状态。如果命令的返回状态码是 0,探针被认为是成功的;否则,探针被认为是失败的。
    • 发送 HTTP 请求(HTTP GET):通过发送 HTTP GET 请求到容器内的指定端点来检查应用程序的状态。如果返回的 HTTP 状态码在 2xx 或 3xx 范围内,探针被认为是成功的;否则,探针被认为是失败的。
    • TCP 套接字(TCP Socket):通过尝试建立到容器内指定端口的 TCP 连接来检查应用程序的状态。如果连接成功建立,探针被认为是成功的;否则,探针被认为是失败的。

    五、总结

      通过合理配置和使用探针,可以确保应用程序在 Kubernetes 中保持健康、可用和可靠。探针的设置应根据应用程序的特性、资源要求和预期行为进行调整,以确保准确地监控应用程序的状态,并采取适当的操作来维护容器的健康状态。可以在 Kubernetes Pod 的配置文件(例如 YAML 文件)中定义这些探针。通过配置探针,Kubernetes 将定期执行探针检查,并根据检查结果采取相应的操作来维护应用程序的健康。

      通过合理配置和使用探针,可以确保应用程序在 Kubernetes 中保持健康、可用和可靠。探针的设置应根据应用程序的特性、资源要求和预期行为进行调整,以确保准确地监控应用程序的状态,并采取适当的操作来维护容器的健康状态。

  • 相关阅读:
    Hadoop3教程(三十四):(生产调优篇)MapReduce生产经验汇总
    【毕业季|进击的技术er】工作七年的职场人,不希望你们再走弯路
    虚拟机与主机(win10之间的通信)
    【分布式系统】docker安装FastDFS分布式文件系统
    python pytorch- TextCNN TextRNN FastText Transfermer (中英文)文本情感分类实战(附数据集,代码皆可运行)
    【RabbitMQ】——主题模式(Topics)
    光谱数据处理:1.特征波长优选的不同方法与Python实现
    vue中的插槽slot
    【Java 进阶】集合概述
    虹科Pico汽车示波器学院 | 第二课直播精彩回顾
  • 原文地址:https://blog.csdn.net/qq_42979842/article/details/130857164