在 TCP 探测和 HTTP 探测之间进行选择以确保 kubernetes 中的活跃性和就绪性

win*_*ngs 1 tcp http kubernetes readinessprobe livenessprobe

为了简单起见,我认为最好只检查 kubernetes 中 TCP 端口的活跃度和就绪情况,因为它不需要了解运行状况检查端点(HTTP 路径),而只需要端口号。非常感谢有关仅依赖 TCP 端口进行服务运行状况检查的缺点的任何指南,请假设 Pod 不是某些其他服务的代理,并且所有业务逻辑都在 Pod 本身中。

https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

Max*_*bur 6

根据我的经验,当您在同一个 pod 中的应用程序前面有一个反向代理 sidecar(例如 nginx)时,会选择 HTTP 而不是 TCP。在这种情况下,即使应用程序尚未准备好,nginx 也将始终接受 TCP。因此你需要 HTTP。

否则:

  • 如果这是直接侦听端口的应用程序服务器
  • 你知道它只有在满载时才开始监听
  • 你不需要任何额外的逻辑/health(比如检查数据库连接)

如果以上所有情况均成立 - 只需使用 TCP。

提示您甚至不需要知道 TCP 的端口号,您可以使用命名端口: https: //kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#使用命名端口