当前位置: 首页 > 知识库问答 >
问题:

如何正确配置Kubernetes探测器定时(适用于Spring Boot应用程序)

濮升
2023-03-14

我们有一个简单的Spring Boot web应用程序,启动时间不到30秒。因此,我将探测配置如下:

    readinessProbe:
      httpGet:
        path: /actuator/health/readiness
        port: 8080
      initialDelaySeconds: 30
      periodSeconds: 1
    livenessProbe:
      httpGet:
        path: /actuator/health/liveness
        port: 8080
      initialDelaySeconds: 30
      periodSeconds: 1

我的理解是Readision probe等待30秒,然后将成功(如果应用程序启动)。而且活动性探测延迟30秒(从部署开始)开始并将在几乎同时就绪探测成功(如果应用程序准备就绪)的同时成功。但我在日志中看到的是准备状态探测器等待30秒然后成功,但之后还有30秒的等待时间,然后旧的吊舱就会关闭:

develop/demo-57c8984866-6v5sl[demo]: {"ts":"2020-10-08T17:33:07.378Z","logger":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","level":"INFO","thread":"main","message":"Tomcat started on port(s): 8080 (http) with context path ''"}
develop/demo-57c8984866-6v5sl[demo]: {"ts":"2020-10-08T17:33:07.387Z","logger":"org.springframework.data.repository.config.DeferredRepositoryInitializationListener","level":"INFO","thread":"main","message":"Triggering deferred initialization of Spring Data repositories…"}
develop/demo-57c8984866-6v5sl[demo]: {"ts":"2020-10-08T17:33:09.441Z","logger":"org.springframework.data.repository.config.DeferredRepositoryInitializationListener","level":"INFO","thread":"main","message":"Spring Data repositories initialized!"}
develop/demo-57c8984866-6v5sl[demo]: {"ts":"2020-10-08T17:33:09.469Z","logger":"com.example.Application","level":"INFO","thread":"main","message":"Started Application in 23.918 seconds (JVM running for 25.343)"}
develop/demo-57c8984866-6v5sl[demo]: {"ts":"2020-10-08T17:33:14.251Z","logger":"org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]","level":"INFO","thread":"http-nio-8080-exec-1","message":"Initializing Spring DispatcherServlet 'dispatcherServlet'"}
develop/demo-57c8984866-6v5sl[demo]: {"ts":"2020-10-08T17:33:14.258Z","logger":"org.springframework.web.servlet.DispatcherServlet","level":"INFO","thread":"http-nio-8080-exec-1","message":"Initializing Servlet 'dispatcherServlet'"}
develop/demo-57c8984866-6v5sl[demo]: {"ts":"2020-10-08T17:33:14.292Z","logger":"org.springframework.web.servlet.DispatcherServlet","level":"INFO","thread":"http-nio-8080-exec-1","message":"Completed initialization in 30 ms"}
develop/demo-79cc9bc757-xlg6z[demo]: 2020-10-08T17:33:44.590172 Shutting down...
develop/demo-79cc9bc757-xlg6z[demo]: {"ts":"2020-10-08T17:33:44.658Z","logger":"org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean","level":"INFO","thread":"SpringContextShutdownHook","message":"Closing JPA EntityManagerFactory for persistence unit 'default'"}
develop/demo-79cc9bc757-xlg6z[demo]: {"ts":"2020-10-08T17:33:44.664Z","logger":"org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor","level":"INFO","thread":"SpringContextShutdownHook","message":"Shutting down ExecutorService 'applicationTaskExecutor'"}
develop/demo-79cc9bc757-xlg6z[demo]: {"ts":"2020-10-08T17:33:44.667Z","logger":"com.zaxxer.hikari.HikariDataSource","level":"INFO","thread":"SpringContextShutdownHook","message":"HikariPool-1 - Shutdown initiated..."}
develop/demo-79cc9bc757-xlg6z[demo]: {"ts":"2020-10-08T17:33:44.680Z","logger":"com.zaxxer.hikari.HikariDataSource","level":"INFO","thread":"SpringContextShutdownHook","message":"HikariPool-1 - Shutdown completed."}

共有1个答案

南门鸿振
2023-03-14

好的,我们用来管理k8s清单的工具(kubecfg)和库对minreadyseconds属性有不同的默认值(30秒)。我改变了,一切都像预期的那样运作。

 类似资料:
  • 我已经阅读了一些文档,并了解了如何使用执行器设置就绪性和活动性endpoint,比如这一个。但我不知道如何设置“启动”探测器的endpoint。 我的应用yml: 我的部署配置: 致动器似乎没有为“启动”探针提供URL,或者换句话说,http://localhost:8080/actuator/health/startup没用。我怎么设置呢?

  • 问题内容: 我将使用keycloak保护我的golang应用程序,但keycloak本身不支持go语言。 github中有一些go适配器作为一个开放项目,已经将openId connect协议实现为提供程序服务,但是它们没有提供有关如何将库与应用程序集成的示例或文档。 如何使用Golang与Keycloak互动? 问题答案: 如您所指出的,没有用于golang的官方keycloak适配器。但是实现

  • 问题内容: 我有一个使用JPA持久性的jersey-2 / hk2应用程序。将在这样的约束启动 工厂级的 这可行,但是对于每个请求,我都会在日志中收到有关已注册EntityManager的警告: 我究竟做错了什么?在jersey-2 / hk2应用程序中初始化EntityManager的正确方法是什么? 问题答案: 一种选择是不是创建一个新的(这是在请求范围内),您可以创建为一个单独的工厂,然后就

  • 我有一个使用JPA持久性的jersey-2/hk2应用程序。启动时绑定如下所示

  • 我们正在将ruby微服务迁移到kubernetes,我们过去在中保存特定于环境的配置。使用kubernetes,您可以为每个服务创建特定于环境的文件,例如等。 虽然kubernetes的pod配置文件能够保存环境变量,但您似乎不能在其中保存结构化数据。 例如,在中,我们有 在kubernetes中继续这种实践并在中打破环境是否合理,或者kubernetes是否有一些其他的最佳实践来为POD提供结构

  • 基本上,我正在使用spring boot和thymeleaf创建一个餐厅餐饮网站(只是一个课程的练习),厨师提供自助餐,每个自助餐由不同的菜肴和不同的配料组成(对不起,我的英语)。 我的问题是:我应该使用来指示厨师制作的自助餐吗? 或者我应该直接使用(“/自助餐”)?因为对于配料的控制器,我最终会使用<代码>(“/厨师/{id}/自助餐/{id}/盘子{id}/配料”) ,它看起来很奇怪,但我认为