Dapr 可观测性文档中的 sidecar 健康状态

发布于 2025-11-04 09:32:02 字数 2643 浏览 1 评论 0

Dapr 提供了一种使用 HTTP /healthz 端点来确定其健康状况的方法。有了这个端点,Dapr 进程或 sidecar 可以被探测到它的健康状况,从而确定它的准备度(readiness) 和活力(liveness)。参见 健康 API

Dapr /healthz 端点可以被应用托管平台的健康探针使用。本主题介绍了 Dapr 如何与来自不同托管平台的探针集成。

作为用户,当将 Dapr 部署到托管平台(例如 Kubernetes)时,Dapr 健康端点会自动为您配置。你不需要配置任何东西。

注意:Dapr actor 也有一个健康 API 端点,Dapr 会探测应用程序,以响应 Dapr 发出的信号,即 actor 应用程序是健康且正在运行的。请参阅 actor 健康 API

健康端点:与 Kubernetes 的整合

Kubernetes 使用就绪( readiness )和活泼度( liveness )探针来确定容器的健康状况。

kubelet 使用 liveness probes 来知道何时重启容器。例如,liveness 探针可以捕捉到一个死锁,即应用程序正在运行,但无法取得进展。在这样的状态下重启容器,可以帮助使应用在有 bug 的情况下仍有更多的可用性。

kubelet 使用 readiness probes 来了解一个容器何时准备好开始接受流量。当一个 pod 的所有容器都准备好时,就认为它已经准备好了。这个就绪信号的一个用途是控制哪些 pod 被用作 Kubernetes 服务的后端。当一个 pod 没有准备好时,它将从 Kubernetes 服务负载平衡器中移除。

当与 Kubernetes 集成时,Dapr sidecar 被注入一个 Kubernetes 探针配置,告诉它使用 Dapr healthz 端点。这是由 Sidecar Injector 系统服务完成的。与 kubelet 的集成如下图所示。

如何在 Kubernetes 中配置 Liveness 探针?

在 pod 配置文件中,在容器规范部分添加了活泼度(Liveness) 探针,如下图所示。

 livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 3
      periodSeconds: 3

在上面的例子中,periodSeconds 字段指定 kubelet 应该每 3 秒执行一次活度探测。initialDelaySeconds 字段告诉 kubelet 在执行第一个探测之前应该等待 3 秒。要执行探测,kubelet 会向在容器中运行并在本例中监听端口 8080 的服务器发送 HTTP GET 请求。如果服务器的 /healthz 路径的处理程序返回一个成功代码,那么 kubelet 认为容器还活着并且是健康的。如果处理程序返回失败代码,kubelet 就会杀死容器并重新启动它。

任何大于或等于 200 且小于 400 的代码表示成功。任何其他代码表示失败。

如何在 Kubernetes 中配置 readiness 探针?

就绪(readiness)探针的配置与活度探针类似,唯一的区别是使用 readinessProbe 字段而不是活度探针字段。

readinessProbe:
			httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 3
      periodSeconds: 3

Dapr sidecar 健康端点如何用 Kubernetes 配置?

如上所述,这个配置是由 Sidecar Injector 服务自动完成的。本节介绍了在活泼度和准备度探针上设置的具体数值。

Dapr 在端口 3500 上有其 HTTP 健康端点 /v1.0/healthz ,这可以和 Kubernetes 一起用于就绪和活泼度探针。当 Dapr sidecar 被注入时,在 pod 配置文件中用以下值配置就绪和活泼度探针。

livenessProbe:
      httpGet:
        path: v1.0/healthz
        port: 3500
      initialDelaySeconds: 5
      periodSeconds: 10
      timeoutSeconds : 5
      failureThreshold : 3
readinessProbe:
      httpGet:
        path: v1.0/healthz
        port: 3500
      initialDelaySeconds: 5
      periodSeconds: 10
      timeoutSeconds : 5
      failureThreshold: 3

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。