6

我在 .net 核心中有一个控制台应用程序。如何实现 Kubernetes 就绪/活跃度探测?

我的应用程序循环处理rabbitmq 消息,并且不监听任何http 端口。

4

3 回答 3

2

就绪探测对于这种情况来说是零意义的,因为您不会通过服务来引导任何流量。当您的应用程序自行读取 rabbitmq 时,无论 kube 探针如何,它都会这样做。虽然在使用活性探针时存在逻辑,但如果内部进程以某种方式失败,您可能希望重新启动容器。

您可以创建一个状态 api 端点,该端点将在某个端口上侦听 http 请求,如果您的应用程序健康(您需要一些内部逻辑来定义健康的含义),则以 200 OK 响应,或者使用基于命令的探针启动一个命令,该命令将做一些检查并报告容器是否正常。

于 2017-12-17T19:26:34.560 回答
2

在这种情况下,最好在同一个 pod 中创建一个 sidecar 容器。该容器将托管一个 ASP.NET Core 站点,专门用于利用 .NET Core 2.2 中最近引入的新运行状况检查 API。有监控rabbitmq连接的扩展。然后,您将公开 ASP.NET Core 网站以进行运行状况检查。

ASP.NET Core 运行状况监控

AspNetCore.HealthChecks.Rabbitmq

于 2019-05-06T12:55:54.133 回答
1

下面是一些不错的解决方案,可以将健康检查添加到非 asp 应用程序(例如控制台应用程序):

在 .NET Core Worker 服务中执行健康检查

我建议实施 TCP 解决方案,因为它是最小的,但仍然给出了预期的结果。

于 2021-06-04T16:14:18.157 回答