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

14
我有一个在Kubernetes中运行的应用程序。为了利用无停机滚动更新的优势,我必须实现适当的健康检查,以便集群可以知道何时应用程序/容器已准备好处理请求。
我正在尝试使用新的ASP.NET Code 2.2 Healthchecks功能。
我应该返回一个Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckResult结构体,其中包含应用程序的状态。
这个结构体有3个静态方法,我可以使用它们来返回这个状态:
  • Healthy
  • Unhealthy
  • Degraded
在哪些情况下,如果应用程序不正常,我应该使用Unhealthy而不是Degraded?举几个例子会很好。
1个回答

19
一个“退化的”健康检查可以用于已经成功但速度慢或不稳定的检查。例如,简单的数据库查询已经成功,但需要超过一秒钟的时间。在问题解决之前将流量转移到另一个实例可能是一个好主意。
“不健康”的检查意味着组件根本无法工作。例如,无法建立与Redis缓存的连接。重新启动实例可能会解决此问题。
引用博客文章:
一个失败的就绪探针表示:应用程序已崩溃。您应该关闭它并重新启动。
一个失败的存活探针表示:应用程序没有问题,但还没有准备好提供服务。
你可以说,“退化”的健康检查对应于“就绪”探针,“不健康”的检查对应于“存活”探针。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接