首页 > 解决方案 > 为什么我的 Spring Boot 应用程序即使在配置之后也不启动执行器

问题描述

我的 Spring Boot 应用程序使用执行器进行健康检查。我使用这个配置:

management.server.port = 9093
management.endpoints.web.exposure.include = health

k8s 集群尝试 http get to host:9093/acutator/health 进行健康检查。在本地机器上运行时效果很好,我尝试使用相同的 Dockerfile 为我自己的本地机器构建一个 docker 容器也可以。但是当我将它推送到 prod env 中的 k8s 集群时,健康检查保持失败,因为连接到 9093/actuator/health 失败。

我观察了 prod env 的日志,发现 Netty 服务器不监听 9093 端口。我只能看到

o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port 8080

但是在我的本地机器上,我可以看到 Netty 在 9093 端口启动的日志。

o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port 9093

问题是,在什么情况下,Spring Boot 不会启动执行器?似乎它与k8s env有关。

标签: springspring-bootdockerspring-boot-actuator

解决方案


确实可能与您的 k8s 设置有关。

Spring Application 不做任何假设,无论它是在 k8s 环境中运行还是完全没有任何容器化。

您可以尝试通过 WGET 从 pod 内部执行对执行器的调用(假设 WGET/CURL 在那里可用)并确保端点可访问。

如果确实可以访问,请查看Actuator 文档,其中详细说明了如何设置 k8s 探针。

还要检查错别字,在你使用一个词acutator两次的问题中,它可能应该是一个actuator;)


推荐阅读