共计 565 个字符,预计需要花费 2 分钟才能阅读完成。
由于业务需求,需要在网关上新增一个配置,由于不支持软加载,对 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
后期在观察下效果
正文完