Spring Cloud Config Server部署后liveness/readiness探针失败无限重启求助
问题根因排查与解决方法
- Spring Security配置不生效导致接口401
你使用的Spring Boot 2.5.0版本早已废弃security.basic.enabled=false配置,你引入了spring-boot-starter-security依赖后,默认所有接口都会开启身份认证,探针访问/actuator/health会返回401状态码,直接导致探测失败。
解决方法:- 不需要安全管控的话直接移除
spring-boot-starter-security依赖 - 保留安全组件的话,新增Security配置类放行
/actuator/**路径,或者在探针配置中增加合法的身份认证请求头
- 不需要安全管控的话直接移除
- Git仓库连接失败导致健康状态为DOWN
Spring Cloud Config Server启动时会主动连接配置的Git仓库,只要连接失败(网络不通、凭证错误、分支不存在),/actuator/health就会返回DOWN状态,导致探测失败。你需要确认:- Pod内可以正常访问你配置的私有GitHub地址
GITHUB_TOKEN环境变量已正确注入到容器,配置中的占位符{GITHUB_TOKEN}已被替换为实际有效值- Git仓库的
test分支存在,且对应凭证有仓库读取权限
- Spring Boot版本不兼容导致启动异常
你父POM的Spring Boot版本是2.5.0,但spring-boot-maven-plugin指定的版本是2.3.5.RELEASE,版本不匹配可能导致打包后的Jar包启动异常,服务无法正常监听端口。
解决方法:移除插件的version配置,继承父POM的统一版本即可。 - 健康检查策略不合理
当前你使用的通用健康端点会检查所有依赖组件状态,只要有一个外部组件异常就会导致整体状态异常。建议改为使用Spring Boot 2.3+内置的分场景健康端点:
存活探针路径改为/actuator/health/liveness
就绪探针路径改为/actuator/health/readiness
同时可以按需关闭不需要的健康检查项,比如management.health.git.enabled=false临时关闭Git健康检查快速验证。
快速排查技巧
临时去掉Pod的探针配置,启动后进入容器执行curl -v http://localhost:8080/actuator/health,直接查看返回的状态码和响应内容,可快速定位具体失败原因。
内容的提问来源于stack exchange,提问作者Avi
相关产品推荐
相关产品推荐

