Unhealthy 与 Degraded .NET 健康检查状态之间有什么区别

Whats the difference between Unhealthy vs Degraded .NET health check status

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

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

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

这个结构有 3 个我可以用来 return 这个状态的静态方法:

在哪些应用程序不正常的情况下我应该使用不健康与降级?举几个例子就好了。

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

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

引用博客 post:

A failed liveness probe says: The application has crashed. You should shut it down and restart.

A failed readiness probe says: The application is OK but not yet ready to serve traffic.

您可以说 "degraded" 健康检查映射到 "readiness" 探测器,而 "unhealthy" 检查映射到 "liveness" 探测器。