温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么掌握SpringBoot-2.3的容器探针

发布时间:2021-10-12 13:57:41 来源:亿速云 阅读:158 作者:柒染 栏目:云计算

今天就跟大家聊聊有关怎么掌握SpringBoot-2.3的容器探针,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

探针特性的官方信息

  • 如下图红框所示,2.3版本的容器探针特性早在预览版(v2.3.0.M4)就已经发布: 怎么掌握SpringBoot-2.3的容器探针

  • 如今v2.3.0.RELEASE已发布,可以放心的学习和使用该特性了,首先把基础知识点列出来,确保准备工作OK;

知识点整理

下面是掌握探针技术所需的基础知识,也是本文的主要内容:

  1. kubernetes的存活探针<font color="blue">livenessProbe</font>;

  2. kubernetes的就绪探针<font color="blue">readinessProbe</font>;

  3. SpringBoot的<font color="blue">actuator</font>;

接下来逐个学习,有了这些知识积累,我们才能更好的阅读官方资料,开发适合自己业务场景的探针;

kubernetes的存活探针livenessProbe

  1. kubernetes的探针涉及的内容是很多的,这里只提和SpringBoot相关的部分;

  2. kubelet 使用存活探针<font color="blue">livenessProbe</font>来知道什么时候要重启容器;

  3. 下图是kubernetes官网的存活探针示例,几个关键参数已经做了详细说明:

怎么掌握SpringBoot-2.3的容器探针

  1. 可见如果我们的SpringBoot应用发布到kubernetes环境,只要应用还健康,livenessProbe对应的地址就要能响应200-400的返回码;

kubernetes的就绪探针readinessProbe

  1. 有时候,应用程序会暂时性的不能提供通信服务。例如,应用程序在启动时可能需要加载很大的数据或配置文件,或是启动后要依赖等待外部服务。在这种情况下,既不想杀死应用程序,也不想给它发送请求。Kubernetes 提供了就绪探测器来发现并缓解这些情况。容器所在 Pod 上报还未就绪的信息,并且不接受通过 Kubernetes Service 的流量。

  2. 就绪探测器的配置和存活探测器的配置相似,唯一区别就是要使用 <font color="blue">readinessProbe</font>字段,而不是 livenessProbe 字段;

  3. 简单的说,就绪探针正常的容器,k8s就认为是可以对外提供服务的,相应的请求也会被调度到该容器上来;

SpringBoot的actuator

  1. 简单来说,actuator是用来帮助用户监控和操作SprinBoot应用的,这些监控和操作都可以通过http请求实现,如下图,http://localhost:8080/actuator/health 地址返回的是应用的健康状态:

怎么掌握SpringBoot-2.3的容器探针

  1. 下面是常用的actuator地址,访问不同的地址可以得到不同的信息:

怎么掌握SpringBoot-2.3的容器探针

  1. 在SpringBoot-2.3版本中,actuator新增了两个地址:<font color="red">/actuator/health/liveness</font>和<font color="red">/actuator/health/readiness</font>,前者用作kubernetes的<font color="blue">存活探针</font>,后者用作kubernetes的<font color="blue">就绪探针</font>;

画外音:SpringBoot的探针技术就这点东西?

  1. 文章看到这里,您可能觉得索然无味:所谓的容器探针特性如此简单,新增两个actuator地址留给kubernetes的存活和就绪探针用,只要这两个地址响应正常,kubernetes就判定该容器正常;

  2. 大多数时候,上述结论并无不妥,SpringBoot官方给出的推荐配置如下图,我们只要照搬即可:

怎么掌握SpringBoot-2.3的容器探针

  1. 冷静下来仔细思考,有三个问题似乎没有解决:

  • 首先,SpringBoot为kubernetes提供了两个actuator项,但是那些并未部署在kubernetes的SringBoot应用呢?用不上这两项也要对外暴露这两个服务地址吗?

  • 其次,就绪探针是什么时候开始返回200返回码的?应用启动阶段,业务服务可能需要一段时间才能正常工作,就绪探针要是提前返回了200,那k8s就认为容器可以正常工作了,这时候把外部请求调度过来是无法正常响应的,所以搞清楚就绪探针的状态变化逻辑很重要;

  • 最后,也是最重要的一点:有的场景下,例如外部依赖服务异常、本地全局异常等情况下,业务不想对外提供服务,等到问题解决后业务又可以对外提供服务了,如果此时我们能自己写代码控制就绪探针的返回码,那就做到了控制kubernetes是否将外部请求调度到此容器上,这可是个很实用的功能!

看完上述内容,你们对怎么掌握SpringBoot-2.3的容器探针有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI