为了简单起见,我认为最好只检查 kubernetes 中的 TCP 端口的活跃性和准备情况,因为它不需要了解健康检查端点(HTTP 路径),而只需要了解端口号。非常感谢任何关于仅依赖 TCP 端口进行服务健康检查的缺点的指南,请假设 pod 不是其他服务的代理,并且所有业务逻辑都在 pod 本身中。
问问题
808 次
1 回答
4
根据我的经验,当您在同一个 pod 中的应用程序前面有一个反向代理 sidecar(例如 nginx)时,会选择 HTTP 而不是 TCP。在这种情况下,即使应用程序尚未准备好,nginx 也会始终接受 TCP。因此,您需要 HTTP。
否则:
- 如果这是直接在端口上侦听的应用服务器
- 你知道它只有在满载时才开始收听
- 你不想要任何额外的逻辑
/health
(比如检查数据库连接)
如果以上所有都属实 - 只需使用 TCP。
提示您甚至不需要知道 TCP 的端口号,您可以使用命名端口:https ://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#使用命名端口
于 2020-10-02T08:30:53.490 回答