背景
最近在做服务迁移,迁移完后的新服务,直接将pod的配置丢到新的K8S集群中,健康监测一直失败
Debug思路
先看日志,日志显示SpringBoot已成功启动,按理说不应该无法访问其/actuator/health接口
拉长健康监测延时时间,进入容器中,telnet服务的端口(8080)能通;直接访问http://localhost:8080 也能通;尝试访问 http://localhost:8080/actuator/health 接口,能访问,但既不报错也不返回,一直卡着;访问http://localhost:8080/actuator/info 能访问,也能正常返回信息。
对比/actuator/info和/actuator/health接口的差异,发现/actuator/health会返回很多db连接信息,eureka信息等等。 于是想到曾经遇到的,redis网络没配服务的ip白名单导致服务一直连不上redis,最终很长时间后超时。 排查了当前服务的数据库连接列表,发现果然有一个数据库未对服务开通ip白名单
最终开通ip白名单后,问题顺利解决,容器健康监测成功