对于liveness,我认为它可能会开始循环使用POD/容器,尽管(在DB关闭的情况下)它可能无法修复任何东西。
准备就绪后,我想如果数据库关闭,可能会导致可用应用程序池为0。如果数据库关闭,应用程序本身很可能不会很有用,但我想部分可能仍然可以工作。
对于这种类型的事情,有推荐的最佳实践吗?
从Spring Boot2.3开始,应用程序的可用性状态(包括活跃度和就绪度)在内核中得到支持,并且可以通过执行器作为Kubernetes探针公开。
您的问题是正确的,这在关于活跃度/就绪特性的Spring引导问题中有详细的讨论。
/healt
endpoint从来没有真正被设计成公开应用程序状态,驱动云平台如何处理应用程序实例并将流量路由到它。因为Spring Boot在这里没有更好的提供,所以它已经被大量使用了。
默认情况下,活跃性问题将回复“成功”,除非应用程序本身更改了该内部状态。
readity
探测实际上是关于应用程序为通信服务的能力。正如您所提到的,一些健康检查可能显示应用程序的基本部分的状态,而另一些则不显示。Spring Boot将使就绪状态与应用程序的生命周期同步(web应用程序已经启动,已经请求优雅的关闭,我们不应该再路由流量,等等)。有一种方法可以配置“Readision”健康组,以包含针对特定用例的自定义健康检查集。
我不同意收到赏金的答案中的几个说法,特别是因为从那时起,春靴发生了很大的变化:
我可以找到文件,其中提到我如何添加我的自定义探针和改变探针参数,如初始延迟等,但不能找到默认的探针方法使用的K8S。
我有一个简单的问题,但我找不出正确的答案。 我能怎么做吗?或者是一个很好的答案,可以解释活跃度和就绪度检查python是否正在运行。 多谢!
给出一个Python应用程序,它在无限循环中轮询Kafka主题,并在处理接收到的Kafka消息后将结果上传到s3 bucket。 null 并且活性探测只检查轮询循环是否尚未退出。 严格来说,在准备调查中检查这样的事情是不好的做法吗?
我对战备探测很困惑。假设我使用httpGet和/health作为探测endpoint。一旦就绪检查返回500,服务器将停止服务流量。那么/healthendpoint如何工作呢?换句话说,一旦准备状态检查失败,它怎么能再工作,因为它不再能够对未来/健康检查做出响应? 我想一个有效的解释是路径是在本地调用的?(即不通过HTTPS:${ip and port}/health)
在为kubernetes吊舱做健康检查的时候,为什么在我们已经保持了准备状态探测器的情况下还需要活性探测器呢? Readision probe已经在检查pod中的应用程序是否准备好为请求提供服务,这意味着pod是活动的。但是,为什么要进行活性探测呢?
我使用的是标准的skydns RC/SVC YAMLS。 吊舱描述: (etcd) 我还将放入kube2sky容器中,ca.crt与服务器上的ca.crt匹配。