http - 在TCP探针和HTTP探针之间进行选择以提高kubernetes的 liveness 和就绪性

标签 http kubernetes tcp readinessprobe livenessprobe

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

最佳答案

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

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

  • 如果以上所有内容均正确,请使用TCP。
    提示您甚至不需要知道TCP的端口号,可以使用命名端口:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#use-a-named-port

    关于http - 在TCP探针和HTTP探针之间进行选择以提高kubernetes的 liveness 和就绪性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64168059/

    相关文章:

    javascript - 确定 cookie 的来源是 javascript 还是跟踪像素

    http - 黑莓 http 请求不起作用

    json - Kubernetes:从j2模板动态创建配置json文件

    kubernetes - 如何使用virtualservice公开grafana prometheus和kiali等仪表板?

    c# 4.5 - 一个主要做数据库插入的 TCP 服务器是否应该在一个任务上启动每个客户端

    Android - 通过 TCP/IP 将文件从一个设备同步到多个联系人设备

    ruby - 为什么 ruby​​ 无法在我的 Fedora 20 机器上打开 TCPSocket?

    javascript - HTTP header 上的多个值

    http - Go Golang 提供特定的 html 文件

    nginx - Kubernetes Nginx 入口 - 无法确保负载均衡器 : could not find any suitable subnets for creating the ELB