为什么我的 Spring 引导应用程序即使在配置后也不会启动执行器
Why my Spring Boot application don't start actuator even after config
我的Spring 引导应用程序使用执行器进行健康检查。我使用这个配置:
management.server.port = 9093
management.endpoints.web.exposure.include = health
k8s 集群尝试 http get 到 host:9093/acutator/health 进行健康检查。当 运行 在本地机器上运行时效果很好,我尝试使用相同的 Dockerfile 为我自己的本地机器构建一个 docker 容器也可以。但是当我将它推送到 prod 环境中的 k8s 集群时,健康检查保持失败,因为连接到 9093/actuator/health 失败。
我观察prod env上的log,发现Netty server没有监听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
问题是,在什么情况下,Springboot不会启动actuator?好像跟k8s环境有关。
确实可能与您的 k8s 设置有关。
Spring 应用程序不做任何假设它是在 k8s 环境中运行还是根本没有任何容器化。
您可以尝试通过 WGET 从 pod 本身执行对执行器的调用(假设 WGET/CURL 在那里可用)并确保端点可访问。
如果确实可以访问,请查看 Actuator Documentation,其中详细说明了如何设置 k8s 探针。
还要检查错别字,在问题中你用了一个词 acutator
两次,而它可能应该是 actuator
;)
我的Spring 引导应用程序使用执行器进行健康检查。我使用这个配置:
management.server.port = 9093
management.endpoints.web.exposure.include = health
k8s 集群尝试 http get 到 host:9093/acutator/health 进行健康检查。当 运行 在本地机器上运行时效果很好,我尝试使用相同的 Dockerfile 为我自己的本地机器构建一个 docker 容器也可以。但是当我将它推送到 prod 环境中的 k8s 集群时,健康检查保持失败,因为连接到 9093/actuator/health 失败。
我观察prod env上的log,发现Netty server没有监听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
问题是,在什么情况下,Springboot不会启动actuator?好像跟k8s环境有关。
确实可能与您的 k8s 设置有关。
Spring 应用程序不做任何假设它是在 k8s 环境中运行还是根本没有任何容器化。
您可以尝试通过 WGET 从 pod 本身执行对执行器的调用(假设 WGET/CURL 在那里可用)并确保端点可访问。
如果确实可以访问,请查看 Actuator Documentation,其中详细说明了如何设置 k8s 探针。
还要检查错别字,在问题中你用了一个词 acutator
两次,而它可能应该是 actuator
;)