You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AKS部署就绪探针持续返回500状态码导致部署失败求助

.NET Web应用K8s就绪探针持续返回500导致部署失败的排查思路

我们在部署一款.NET Web应用时遇到就绪探针持续返回500状态码,导致部署失败。就绪探针配置如下:

readinessProbe:
  httpGet:
    path: /page/ping.aspx
    port: 443
    scheme: HTTPS
  initialDelaySeconds: 15
  timeoutSeconds: 2
  periodSeconds: 5
  successThreshold: 1
  failureThreshold: 12

对应的Ping.aspx.cs代码:

/// <summary>
/// Page load event handler.
/// </summary>
/// <param name="sender">The event sender object.</param>
/// <param name="e">The event arguments.</param>
protected void Page_Load(object sender, EventArgs e)
{
    if (this.IsPostBack)
    {
        stopWatch.Reset();
    }
    else if (!stopWatch.IsRunning)
    {
        stopWatch.Start();
    }
}

已验证构建产物与容器内二进制文件一致,应用未完全启动即出现故障,仅能获取kubectl describe日志和本地IIS的u_*.log日志。

排查步骤

  • 检查stopWatch变量定义:代码里直接用了stopWatch但未看到声明,要是这个变量没初始化(比如没声明成static或者没在Page实例里初始化),首次请求肯定会触发NullReferenceException,直接导致500错误。这是最优先要查的点。
  • 深挖容器内错误日志:
    • 进入容器,找到IIS日志路径(一般是C:\inetpub\logs\LogFiles),查看对应站点的日志,看500请求的具体子错误码(比如500.19是配置错误,500.0是ASP.NET运行时异常)。
    • 检查web.config里的自定义错误配置,如果开了<customErrors mode="On">,会把真实错误藏起来,临时改成<customErrors mode="Off" />就能看到具体异常。
  • 验证容器内HTTPS配置:探针用HTTPS访问,得确认容器里的IIS有没有正确配置SSL证书、绑定443端口。要是证书无效或者端口没绑对,请求会直接失败返回500。
  • 手动测试探针路径:
    • 容器启动后,进入容器用Invoke-WebRequest或者curl(容器里有的话)访问https://localhost/page/ping.aspx,看返回的具体错误信息。
    • 本地IIS能正常跑的话,对比容器里的IIS配置:应用程序池的.NET版本、权限、身份,还有站点绑定,确保和本地一致,尤其是应用程序池的身份有没有权限访问应用文件。
  • 排查应用启动依赖:要是应用启动依赖外部服务(比如数据库、缓存),而且没处理依赖未就绪的情况,可能会导致应用初始化失败,探针请求就会返回500。去u_*.log里找有没有初始化相关的异常。
  • 临时调整探针参数验证:虽然你说调参数没用,但可以试试把initialDelaySeconds调大到30或60,排除应用启动慢导致探针检测太早;另外临时把scheme改成HTTP(得确保容器里IIS绑了80端口),验证是不是HTTPS配置的问题。

内容的提问来源于stack exchange,提问作者xchen218

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 17:17:27