由于业务需求,需要在网关上新增一个配置,由于不支持软加载,对pod进行重启。为了方便晚上业务低峰期操作进度
在9点22时进行了pod扩容,从6扩展到12个。但是9.30后,前端状态码报警出现502。
进行排查后发现。在9点22扩容时流量已经提前进入到了新的pod下,而新的pod启动时还没有就绪。
导致新的流量到达新pod时响应出错。
告警时间: 2021-03-23 21:30:21
告警域名: xxxxx
发生事件: 502状态码(10分钟)>100
归属项目: xxx
业务用途: 网关服务
告警数量: 839
排查发现就绪检测如下
readinessProbe:
tcpSocket:
port: ${Port}
initialDelaySeconds: 5
periodSeconds: 10
这个参数initialDelaySeconds:容器启动后要等待多少秒后存活和就绪探测器才被初始化
initialDelaySeconds 字段告诉 kubelet 在执行第一次探测前应该等待 5 秒
而我们的网关配置的时5s
通常一个java应用的启动时间为半分钟到2分钟左右,
所以需要调整这个就绪的探测的时间值
目前调整如下
readinessProbe:
tcpSocket:
port: ${Port}
initialDelaySeconds: 25
periodSeconds: 10
后期在观察下效果