Kubernetes .NET核心-正确停止红隼

Kubernetes .NET核心-正确停止红隼,kubernetes,.net-core,kestrel-http-server,kestrel,Kubernetes,.net Core,Kestrel Http Server,Kestrel,社区, 我想温和地停止Kestrel和正在运行的.Net核心应用程序,使其完成现有查询,防止其处理新查询,并在所有现有查询完成后停止应用程序和Kestrel 我需要它在Kubernetes中设置CI/CD,在那里我有到Kestrel的平衡器路由,而不需要nginx,以在部署新的应用程序版本时实现零停机时间 如果有类似于“nginx-s退出”的东西,那就太好了 是否有人可以建议解决方案或分享如何与Kubernetes中的dotnetcore组织零停机时间的知识 我试着用谷歌搜索解决方案,但没有成功

社区, 我想温和地停止Kestrel和正在运行的.Net核心应用程序,使其完成现有查询,防止其处理新查询,并在所有现有查询完成后停止应用程序和Kestrel

我需要它在Kubernetes中设置CI/CD,在那里我有到Kestrel的平衡器路由,而不需要nginx,以在部署新的应用程序版本时实现零停机时间

如果有类似于“nginx-s退出”的东西,那就太好了

是否有人可以建议解决方案或分享如何与Kubernetes中的dotnetcore组织零停机时间的知识

我试着用谷歌搜索解决方案,但没有成功。终止进程不是选项


谢谢

解决方案1:

您可以使用nginx作为revrese代理服务器。这是一个建议的.NET核心托管策略。

解决方案2:

不正确。把它留在这里让其他人不要走这条路。请阅读下面的@David评论。

你得自己试试。这是非常危险的。你可以把自己锁在外面

.UseKestrel(选项=>{options.Limits.MaxConcurrentConnections=0;})

如果您可以将
KestrelServerLimits
MaxConcurrentConnections
配置为0,则应该能够停止所有流量。
我不知道如何在运行时配置这些限制。但是看到这个实现会很有趣。

嗨,欢迎来到SO。你能提供你到目前为止尝试过的任何代码示例,并指出你遇到问题或缺少逻辑的部分吗?kestrel在哪里运行?在你的豆荚里?是的,红隼在豆荚里第二个选择不对。Kestrel已经根据发送给它的信号(例如sigterm)处理了优雅的关机。感谢你指出@davidfoll。我会在回答中强调这一点。这是一个快速阅读的解决方案,我使用了非常怀疑的语言,显示出我有限的理解力。谢谢你指出。