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

How should I healthcheck an event-driven service

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

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

Kubernetes 支持三种不同类型的探测器,另请参阅 Kubernetes docs:

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

因此,在您的情况下,您可以 运行 一个在您的服务不健康时失败的命令。

另请注意 liveness probes may be dangerous to use

让服务仅监听 HTTP 以公开 liveness/readiness 检查(尽管在从消息代理拉取输入的服务中,准备情况不一定是像 k8s 这样的容器调度程序会关心的事情)并不是真正的问题(而且它还打开了暴露诊断和控制端点的可能性)。