K8s中akkaHttp应用探针返回404失败问题求助
问题原因及解决办法
核心问题是你配置的探针访问路径/在Akka HTTP应用中不存在,导致Kubernetes请求该路径时返回404,触发探针失败。Akka HTTP默认不会在根路径提供健康检查类的响应接口,必须手动添加对应端点或者使用Akka生态的健康检查工具。
解决步骤
1. 为Akka HTTP应用添加健康检查端点
在你的Akka HTTP代码中新增一个健康检查路由,比如/health,返回200状态码。示例Scala代码如下:
import akka.http.scaladsl.server.Directives._ import akka.http.scaladsl.server.Route // 健康检查路由 val healthRoute: Route = path("health") { get { complete("OK") } } // 合并到现有主路由 val mainRoute = healthRoute ~ yourExistingApplicationRoutes
2. 修改Deployment的探针配置
将所有探针的path字段修改为你新增的健康检查路径(比如/health),修改后的配置片段如下:
livenessProbe: httpGet: path: /health port: 8083 initialDelaySeconds: 50 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 8083 initialDelaySeconds: 50 periodSeconds: 10 startupProbe: httpGet: path: /health port: 8083 failureThreshold: 30 periodSeconds: 10
额外方案:使用Akka Management提供的健康检查
如果你的项目使用Akka生态,可以直接引入Akka Management依赖,它会自动提供/ready(就绪检查)、/alive(存活检查)等标准端点,无需手动编写路由。只需在配置中启用对应模块即可,之后将探针路径修改为对应的端点即可。
内容的提问来源于stack exchange,提问作者user21236160
相关产品推荐
相关产品推荐

