spring - 为什么我的 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有关。
解决方案
确实可能与您的 k8s 设置有关。
Spring Application 不做任何假设,无论它是在 k8s 环境中运行还是完全没有任何容器化。
您可以尝试通过 WGET 从 pod 内部执行对执行器的调用(假设 WGET/CURL 在那里可用)并确保端点可访问。
如果确实可以访问,请查看Actuator 文档,其中详细说明了如何设置 k8s 探针。
还要检查错别字,在你使用一个词acutator
两次的问题中,它可能应该是一个actuator
;)
推荐阅读
- r - DT::datatables() 生成的 html 表在使用列级搜索时显示显示异常(缺少字符)
- python - 如何将本地 API 与在不同端口提供的 Vue 应用程序一起使用?
- excel - 使用 Excel VBA 根据常用单元格值向多人发送电子邮件
- pandas - 如何重新采样(上采样)我的 Pandas 数据框?
- python - 将两个数组合并为一个数组,插入一个函数
- r - 如何按组计算平均值并替换R数据框中的日期
- android - 从 Kotlin 中的泛型获取类
- string - MIPS 代码用于将字符串从基数 33 转换为基数 10
- linux - 在 Ubuntu 中返回自定义进程命令
- ruby - 确定当前时间是否在时间范围内。如果没有找到下一个打开的窗口是什么