目录
一、前言
应用部署在 Kubernetes(k8s)上,有些应用启动慢一些,没启动好 就又被 k8s 重启了
二、处理过程
1. 看日志
|
|
2. 看探针配置
|
|
3. 分析
- 刚开始以为 80秒左右(14:38:52.249 到 14:40:11.817),应用被重启了
- 发现和 探针配置的不一样,initialDelaySeconds + periodSeconds * failureThreshold = 60秒
- 然后发现最终结束时间应该是 14:40:22 登录主机: aaaa失败,就是 90秒左右
- 最后发现还有个 宽限时长 terminationGracePeriodSeconds: 30,加上探针 60秒,刚好 90秒左右。至此终于 水落石出
- 建议运维把 initialDelaySeconds 改为 60 以后,成功启动
三、总结
- 最长重启时间:initialDelaySeconds + (periodSeconds + timeoutSeconds) * failureThreshold + terminationGracePeriodSeconds(默认30秒)
- 建议 适当调大 initialDelaySeconds(如 60)、failureThreshold(如 6)、periodSeconds(如 20),总之根据上面的公式计算的时长 要大于 实际启动时长(如 本地测试)
- 配置存活、就绪和启动探针 | Kubernetes
- kubernetes的三种探针startupprobe,ReadinessProbe,LivenessProbe记录 - 陈雷雷 - 博客园 (cnblogs.com)