【发布时间】:2023-02-16 02:16:16
【问题描述】:
TL;DR 是最后一段,但如果不够清楚的话,其余的都在这里作为上下文。
我有一个运行 PHP 应用程序的 K8s pod。它分为一个 FPM 容器和一个 Nginx 容器。设置活性和就绪检查以检查容器进程。所以对于 Nginx,这仅仅意味着“端口 443 正在应答”,而对于 FPM 这意味着“TCP 9000 正在应答吗?”。
我们已经在 PHP 应用程序的 /readiness 和 /liveness 端点处准备好了更多智能探测器,但是这些探测器应该放在哪里呢?
当 pod 在单个容器中同时运行 Nginx 和 FPM 时,这是显而易见的,因为由于 liveness 探测失败而重启单个容器是有意义的。对于 FPM 容器,我认为将其探测类型从 httpGet 更改为 command 可能是正确的做法,因为您随后可以运行检查应用程序状态的命令。不过,感觉有些不对劲(主要是你不再检查主进程了)。
我大概能弄清楚你在哪里检查服务通过FPM,但是我想问的是:
当你有一个带有 FPM 容器的 pod 时,readiness 和 liveness 探针的正确用法是什么?我应该询问应用程序本身是否感觉还好,还是应该从 FPM 获取所有信息来做出决定?
【问题讨论】:
标签: kubernetes fpm readinessprobe livenessprobe