Unhealthy 与 Degraded .NET 运行状况检查状态之间的区别是什么

lmc*_*iro 8 health-monitoring docker kubernetes .net-core asp.net-core

我有一个在 Kubernetes 中运行的应用程序。为了在不停机的情况下利用滚动更新,我必须实施适当的健康检查,以便集群可以知道应用程序/容器何时准备好处理请求。

我正在尝试使用新的 ASP.NET Code 2.2 Healthchecks功能。

我应该返回一个Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckResult包含应用程序状态的结构。

这个结构有 3 个静态方法,我可以用来返回这个状态:

  • 健康
  • 不良
  • 降级

在哪些情况下应用程序不适合我应该使用 Unhealthy vs Degraded?举几个例子就好了。

Hen*_*ema 10

“降级”检查可用于成功但缓慢或不稳定的检查。例如,一个简单的数据库查询确实成功了,但花费了超过一秒钟的时间。在问题解决之前,将流量转移到另一个实例可能是一个好主意。

“不健康”检查意味着该组件根本不工作。例如,无法建立到 Redis 缓存的连接。重启实例可以解决这个问题。

引用博文:

一个失败的活性探针说:应用程序崩溃了。您应该将其关闭并重新启动。

失败的准备探测说:应用程序正常,但尚未准备好为流量提供服务。

您可以说“降级”健康检查映射到“就绪”探测器,“不健康”检查映射到“活性”探测器。