asp.net-core - Asp.net 核心 Kubernetes 作业设置为异常失败状态
问题描述
我有一个在 Asp.net Core 中运行 BackgroundService 的 Kubernetes 作业。
在进行一些处理后,BackgroundService 通过调用 StopApplication 启动关闭。
当 BackgroundService 出现异常时,有没有办法关闭应用程序并将 Kubernetes 作业设置为失败状态?
解决方案
“有没有办法关闭应用程序并将 Kubernetes 作业设置为失败状态......?”
是的,通过预期您的应用程序在遇到异常时将以非零退出代码退出。Kubernetes Job 的最终状态就是这样确定的。
换句话说,如果容器的进程以非零代码结束,它会导致 Pod 终止,最终 Job 状态变为'Failed'
.
如果以编程方式停止 ASP.NET Core 应用程序,使用'StopApplication()'
方法,它会以退出代码退出(此处'0'
的示例用法)。
可能的解决方案:
StopApplication()
您的程序需要通过事先将退出代码显式设置为非零值 ( )来处理异常,甚至像正常关闭 = 一样[1,250]
。
伪代码:
catch (Exception ex)
{
_logger.LogError(ex, "Worker process caught exception");
Environment.ExitCode = 1;
}
finally
{
applicationLifetime.StopApplication();
}
基于此处的示例。
推荐阅读
- swift - Swift:从 Safari 获取文本(AppleScript)
- android - 在 Android 10 (Q) 和 targetSdkVersion = 29 的 ExoPlayer 上播放歌曲的正确方法是什么?
- c# - 创建许多任务和延续并在没有开始的情况下存储它们是不好的做法吗?
- angular - 在 Angular 上,单击按钮时上一条路线为空
- php - wordpress主题开发,自定义分页
- google-sheets - 如何在 Google 表格中创建数据范围图表
- docker - 跨 docker 容器的 cbbackup 问题
- reactjs - 获取无法读取未定义的属性映射,尽管项目状态是用数据设置的
- c# - ASP.NET Core 2.2 身份验证不起作用
- mysql - 如何从通过选择获得的表中的一列中选择表名和值?