狂自私

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

pod的端口拒绝连接:Liveness probe failed:dial tcp ,connect:connection refused

昨天在生产环境上发版,发现pod一直起不来,一直到崩溃循环结束:

 倒数第三行第四行。

这个本质上是健康检查不通过导致的,意思其实是,pod启动起来,运行给定的镜像,但是在设定的超时时间过后,K8S去检查pod是否健康的时候,发现18015这个端口不通,拒绝连接。K8S判定pod存在问题。

这里为啥是拒绝连接,而不是pod直接死亡呢,是谁拒绝的呢。后面我咨询了下开发,开发表示,这里的健康检查是检查了pod里面的一个关键线程是否成功启动并占用该端口。虽然这个线程没有成功启动,但是主进程并没有结束,那么pod自然不会死亡,如果这个时候将deployment中定义的健康检查给去掉,会发现该pod会一直运行,只不过业务不正常罢了。

解决问题的正确操作是检查代码,打印详细日志进行分析,或者直接回滚版本。

但是我这里发现回滚版本也不行,也不能通过健康检查,后面才发现是业务所依赖的某个外部kafka系统失联,导致kafka初始化失败,进而导致关键线程失败。所以问题根因在于外部kafka以及代码逻辑。

posted on   狂自私  阅读(391)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示