在TCP探测和HTTP探测之间选择kubernetes中的活动性和就绪性

问题描述

为简单起见,我认为最好检查一下TCP端口以了解kubernetes的活跃性和就绪性,因为它不需要健康检查端点(HTTP路径)的知识,而只需要端口号即可。非常感谢任何关于仅依靠TCP端口进行服务运行状况检查的缺点的指南,请假定Pod不能代替其他某些服务,并且所有业务逻辑都在pod本身中。

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

解决方法

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

否则:

  • 如果这是直接在端口上监听的应用服务器
  • 您知道它只有在满载时才开始监听
  • 您不希望/health内有任何其他逻辑(例如检查数据库连接)

如果以上所有内容均正确,请使用TCP。

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