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

如何在同一Kubernetes集群中连接.NET API与SQL Server数据库?

问题解决:Kubernetes集群内API Pod连接SQL Server Pod的正确方式

核心问题解释

  • 你当前用127.0.0.1连接失败的原因:Kubernetes中每个Pod都拥有独立的网络命名空间,API Pod里的localhost/127.0.0.1仅指向它自身的容器,无法访问同集群内其他Pod的服务。

正确的连接字符串配置

方案1:通过Kubernetes Service访问(推荐,稳定可靠)

  1. 确保SQL Server Pod已经通过ClusterIP类型的Service暴露(这是K8s集群内服务发现的标准方式)。假设你的Service名称为sql-server-service,且和API Pod处于同一命名空间:
    • 连接字符串的Server部分替换为tcp:sql-server-service,1433
    • 完整示例:
      "Server=tcp:sql-server-service,1433;Initial Catalog=dbdev;Persist Security Info=False;User ID=xxxxxx;Password=xxxpasswordxxx;MultipleActiveResultSets=False;Encrypt=False;TrustServerCertificate=True;Connection Timeout=30;"
      
  2. 如果SQL Server的Service和API Pod处于不同命名空间(比如SQL Server在database命名空间),需要使用K8s的全限定域名:
    • Server部分改为tcp:sql-server-service.database.svc.cluster.local,1433
    • 全限定域名格式规则:服务名.命名空间.svc.cluster.local

方案2:直接用Pod IP访问(仅临时测试,不推荐)

  • 通过kubectl get pods -o wide命令查询SQL Server Pod的集群内部IP(比如10.244.2.3),然后将连接字符串的Server改为tcp:10.244.2.3,1433
  • 缺点:Pod重启后IP会变化,无法保证长期可用性,仅适合临时验证连接

额外验证步骤

  • 可以在API Pod内部测试网络连通性:
    kubectl exec -it <你的API Pod名称> -- telnet sql-server-service 1433
    
    如果能成功连接,说明网络通路正常,再检查账号密码、数据库名称是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:45:59