利用春季启动应用程序中的自定义kubernetes探针
#java #kotlin #springboot #kubernetes

免责声明

本文代表了我对该解决方案的看法,因此,任何建议,修复或讨论都将受到高度赞赏。

短篇小说

在上一篇文章中,我解释了如何在春季启动应用程序中创建自定义的健康指标:Monitoring the health of Spring Boot applications with custom health indicators。现在,我将展示如何将这些自定义指标用于kubernetes准备就绪和livesens探针。

在Kubernetes中,准备和livesence探针是用于确保POD中运行的容器化应用程序的可用性和健康的机制。它们在维持Kubernetes集群中应用的稳定性和可靠性方面起着至关重要的作用。

a livese 探针用于确定容器是否仍能正常运行。它会定期检查集装箱内应用程序的健康状况。如果LIVISE探测器失败(即,容器中的应用程序不响应或崩溃),Kubernetes会根据探测器的配置采取措施。此操作可能包括重新启动容器,甚至杀死POD并允许将其重新安排在不同的节点上。 LIVISE探针对于防止应用程序处于破裂或反应迟钝状态至关重要。

a 准备就绪探针用于确定容器是否准备好接受传入的流量。它指示容器中的应用程序是否已完全启动并运行并能够服务请求。准备探针在部署方案期间特别有用,当时正在推出新版本的应用程序。通过配置准备探针,Kubernetes可以将流量延迟到新启动的容器,直到完全准备好处理请求为止。这有助于防止使用用户将用户定向到可能仍在初始化或不完全正常功能的容器。
可以使用HTTP端点,TCP套接字或命令执行在Kubernetes中配置两种类型的探针。可以使用参数来定制探针,例如探针间隔,超时和故障阈值。正确配置这些探针有助于在Kubernetes环境中应用的整体稳定性和弹性。

启动探针是Kubernetes中引入的另一种探针,以提高应用程序的可靠性,尤其是在其启动阶段。虽然LIVICY和ROSHINCES探针集中在容器的持续健康和准备上,但初创探针专门针对容器初始化的早期阶段。

a 启动探针用于确定容器是否已成功启动并准备好处理请求。与监视容器正在进行的健康状况的LIVENICE探针不同,初创探针与容器的初始状态有关。它有助于延迟将容器标记为准备就绪,直到在启动期间满足特定条件为止。

启动探测器在容器所需的时间比平常时间更长的初始化或某些关键服务需要启动和运行之前,在应用程序被视为完全运行之前,很有用。例如,应用程序可能需要在启动期间建立数据库连接或加载配置文件。通过配置启动探针,Kubernetes可以等待此初始化过程完成,然后才能从服务或用户接收流量。

本质上,启动探测器通过关注容器启动过程的特定要求来补充失去性和准备探针,以确保在达到所需的初始化水平之前,确保该容器未准备就绪。

总的来说,通过有效地利用LINICICS,REARGINESS和Startup探针,您可以在Kubernetes环境中创建更健壮和更容易耐受的应用程序。

实施

在Kubernetes环境中部署Spring Boot应用程序时,可以利用执行器模块的功能无缝整合“ Livices”和“ Revalesensy”信息。此信息来自应用程序接口,随后在专用的健康指标中使用,即LivenessStateHealthIndicatorReadinessStateHealthIndicator。这些指标在全球健康终点(/actuator/health)上都可见,并且作为可通过健康组可访问的不同HTTP探针:/actuator/health/liveness/actuator/health/readiness

第一步涉及在春季启动应用程序中为Kubernetes环境启用LIVICES和RADENISISS探针:

management.health.kubernetes.enabled=true
management.health.livenessstate.enabled=true
management.health.readinessstate.enabled=true
management.endpoint.health.probes.enabled=true

随后,目的是向与我们申请有关的每个Kubernetes要求提供全面的健康信息:

management.endpoint.health.validate-group-membership=true
management.endpoint.health.group.liveness.show-details=always
management.endpoint.health.group.liveness.show-components=always
management.endpoint.health.group.readiness.show-details=always
management.endpoint.health.group.readiness.show-components=always

更有趣的方面在于我们的自定义健康指标将其整合到失效和准备探针中。实现这一目标仅需要在Spring Boot应用程序中重新配置卫生组。

假设我们拥有随后的自定义健康指标:

  • servicestate (源自ServiceStateHealthIndicator类)
  • cachestate (源自CacheStateHealthIndicator类)

弹簧靴便利地允许使用包含和排除各种健康检查指标来自定义这些健康检查:

management.endpoint.health.group.liveness.exclude=readinessState,serviceState
management.endpoint.health.group.liveness.include=cacheState
management.endpoint.health.group.readiness.include=cacheState,serviceState

最终协议与通过以下配置完成的替代或补充途径的利用有关:

management.endpoint.health.probes.add-additional-paths=true
management.endpoint.health.group.liveness.additional-path=server:liveness
management.endpoint.health.group.readiness.additional-path=server:readiness

概括

在Kubernetes中部署Spring Boot应用程序时,您可以利用以下探针来确保应用程序的可靠性和响应能力:LINICICS和RESARNESISS,并以非常方便的方式将应用程序的其他层添加到这些探针中。即使在动态的容器化环境中,这种方法也有助于保持弹簧启动应用程序的稳定性和可用性。

资源

  1. Monitoring the health of Spring Boot applications with custom health indicators
  2. Configure Liveness, Readiness and Startup Probes
  3. Kubernetes Probes

找到我的文章有帮助吗?您可以给我一个咖啡因的增压,以使它们保持到来!您的coffee donation将保持我的键盘的lack脚和我的想法酝酿。但是请记住,这是完全可选的。请继续关注,了解keep the coffee flowing
keep the coffee flowing