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 中保持健康、可用和可靠。探针的设置应根据应用程序的特性、资源要求和预期行为进行调整,以确保准确地监控应用程序的状态,并采取适当的操作来维护容器的健康状态。
原文链接:https://blog.csdn.net/qq_42979842/article/details/130857164