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

Kubernetes集群中.NET Core Web API无法连接SQL Server实例求助

排查点汇总

基础配置错误

  • 配置键拼写错误:appsettings.json中的连接字符串根键名错误,ASP.NET Core默认读取的连接字符串配置键为ConnectionStrings,你的配置中写为ConnectionsStrings多了一个s,会直接导致程序无法读取到正确的连接字符串。
  • CPU资源配置异常:Deployment中MSSQL容器的CPU limits配置为"100",和requests的100m(0.1核)差距极大,大概率是手误漏写了单位m,异常的CPU限制会导致MSSQL实例启动卡顿甚至资源不足崩溃,无法响应连接请求。

集群内部访问失败排查

  • 集群内访问MSSQL不需要使用LoadBalancer的公网IP,直接使用K8s Service的集群内域名即可,连接字符串的Server参数改为mssql-deployment.default.svc.cluster.local,1433即可,使用公网IP可能触发集群网络回环、SNAT策略限制导致连接失败。
  • 执行kubectl get pods -l app=mssql确认MSSQL Pod处于Running状态,若状态为CrashLoopBackOff,执行kubectl logs <MSSQL Pod名称>查看启动日志,检查是否为SA密码不符合复杂度要求(MSSQL要求SA密码至少8位,包含大小写、数字、特殊字符,复杂度不足会直接启动失败)。
  • 执行kubectl get endpoints mssql-deployment确认Service正确绑定了后端Pod的IP,若ENDPOINTS列为空,说明Service的selector和Pod的label不匹配,需核对两侧的app: mssql标签是否一致。
  • 确认集群没有配置限制跨Pod访问的NetworkPolicy,若存在网络策略,需开放1433端口的入站规则给Web API所在的Pod。
  • 进入Web API的Pod中执行nc -zv mssql-deployment.default.svc.cluster.local 1433测试端口连通性,端口不通先排查集群网络插件故障。

外部访问失败排查

  • 执行kubectl get svc mssql-deployment确认LoadBalancer类型的Service已经分配到了正常的EXTERNAL-IP,若EXTERNAL-IP为Pending状态,说明你的集群不支持LoadBalancer(裸机集群需预先安装MetalLB等组件),无法通过公网IP访问。
  • 确认集群节点防火墙、云服务商安全组已经放开1433端口的入站访问规则。
  • 连接字符串补充TrustServerCertificate=True参数,MSSQL默认使用自签名证书,客户端未信任该证书时会直接拒绝连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:36:02