【发布时间】:2021-09-05 01:23:16
【问题描述】:
我已经构建了一个在 kubernetes 上运行的 ASP.NET Core Worker Service(它处理来自队列的消息)。由于它是一个后台服务,它目前没有任何 HTTP 端点。现在我想为它添加一个 k8s 的健康/活跃度端点——最好利用.NET Core standard health checks。
所以我的问题是:有没有办法在不增加 HTTP 端点开销的情况下公开这些健康检查,而 k8s 可以使用它们(TCP or generic command)?任何指向示例的指针都会很棒!谢谢!
【问题讨论】:
-
假设您的最终目标是支持活性探测,您可以编写一个健康检查/发布器,在磁盘上创建一个文件stackoverflow.com/q/58770795/491907 然后您可以编写一个
exec(不是httpGet) 运行命令检查文件存在/修改日期/时间的活动探针kubernetes.io/docs/tasks/configure-pod-container/… -
谢谢!这正是我想要的
-
我会说您需要稍微调整一下解决方案。如果应用程序冻结,发布者本身可能无法删除该文件。因此,您可以有一个看起来是实时的挂起服务。我会调整并让运行状况检查发布者修改现有文件,并让活性探针跟踪修改日期(可能通过使用第二个文件)。这样您就可以跟踪整个应用程序冻结并且无法删除文件的情况
-
很好的标注!我会检查文件修改日期
-
如果一切顺利,我建议您完成自我回答
标签: c# asp.net-core kubernetes