我应该如何对事件驱动的服务进行健康检查

问题描述

假设我有一个服务,它不监听 http 请求,或者 gRPC 过程调用只使用来自代理(Kafka、rabbitMQ、Google Pub/Sub,你有什么)的消息。我应该如何对服务进行健康检查(例如 k8s 活跃度和就绪度探测)?

服务是否也应该仅出于健康检查的目的监听 http,还是可以使用其他一些技术?

解决方法

让服务仅侦听 HTTP 以公开活动/就绪检查(尽管在从消息代理获取输入的服务中,就绪不一定是像 k8s 这样的容器调度程序会关心的事情)并不是真的一个问题(它也有可能暴露诊断和控制端点)。

,

Kubernetes 支持三种不同类型的探测器,另见 Kubernetes docs

  • 运行命令
  • 发出 HTTP 请求
  • 检查 TCP 套接字

因此,在您的情况下,您可以运行在服务不正常时失败的命令。

还要注意 liveness probes may be dangerous to use