【问题标题】:dotnet core pod in Kubernetes connect to local SQL ServerKubernetes 中的 dotnet core pod 连接到本地 SQL Server
【发布时间】:2018-09-28 10:15:12
【问题描述】:

我在 Kubernetes(minikube)中有一个 dotnet core pod,需要访问本地 SQL Server(测试服务器)。 它在容器中工作,但是当我将它放入 pod 时。它不能在我的机器上运行 sql server

但我可以从 pod ping 到我的 SQL Server

这是来自日志的错误

 An error occurred using the connection to database
> 'ArcadiaAuthenServiceDB' on server '192.168.2.68'.
> System.Data.SqlClient.SqlException (0x80131904): A network-related or
> instance-specific error occurred while establishing a connection to
> SQL Server. The server was not found or was not accessible. Verify
> that the instance name is correct and that SQL Server is configured to
> allow remote connections. (provider: TCP Provider, error: 40 - Could
> not open a connection to SQL Server)  

root@authenservice-dpm-57455f59cf-7rqvz:/app# ping 192.168.2.68
PING 192.168.2.68 (192.168.2.68) 56(84) bytes of data.
64 bytes from 192.168.2.68: icmp_seq=1 ttl=127 time=0.449 ms
64 bytes from 192.168.2.68: icmp_seq=2 ttl=127 time=0.361 ms
64 bytes from 192.168.2.68: icmp_seq=3 ttl=127 time=0.323 ms
64 bytes from 192.168.2.68: icmp_seq=4 ttl=127 time=0.342 ms
^C
--- 192.168.2.68 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3064ms
rtt min/avg/max/mdev = 0.323/0.368/0.449/0.053 ms
root@authenservice-dpm-57455f59cf-7rqvz:/app# 

我在容器中的连接字符串

"DefaultConnection": "Server=mssql-s; Database=ArcadiaAuthenServiceDB; MultipleActiveResultSets=true;User Id=pbts;Password=pbts"

我尝试在 Kubernetes 中创建服务端点,但没有成功。

谢谢。

编辑 这里是 Service.yml 文件

apiVersion: v1  
     kind: Service  
     metadata: 
         name: mssql-s 
         namespace: default  spec: 
         ports: 
         - port: 1433 
     ---  
     apiVersion: v1  
     kind: Endpoints  
     metadata: 
         name: mssql-s 
         namespace: default  subsets: 
        - addresses: 
        - ip: 192.168.2.68 
         ports: 
         - port: 1433 
     –--

编辑 我检查 SQL Server 是否也在监听 1433

PS C:\Windows\system32> netstat -aon | findstr 1433   
TCP   0.0.0.0:1433           0.0.0.0:0              LISTENING       5028   
TCP   [::]:1433              [::]:0                 LISTENING       5028

有什么办法可以解决这个问题吗?

【问题讨论】:

  • “本地”是什么意思?在同一个容器上运行?如果您的意思是“在我的主机上运行”,就容器而言,它不是本地的,甚至无法访问。您必须为容器配置网络以启用对外部网络的访问
  • 所以ping 有效,但您应该发现telnet 192.168.2.68 1433 失败(或netcat 到该端口),表明该接口上没有SQL Server 侦听。如果虚拟化网络设置不是问题(并且可能是问题),请验证至少在此接口上启用了 SQL Server 以进行网络访问(使用 SQL Server 配置管理器)。
  • 分享你的服务yaml
  • 感谢所有回复 Panagiotis Kanavos 我有一个 SQL Server 在我的主机上运行,​​但不在 kubernetes 中。 Jeroen Mostert 我不确定我是否理解正确,但我已经将 SQL Server 设置为能够通过 IP 地址进行连接 @VKR 这是 service.yaml apiVersion:v1 种类:服务元数据:名称:mssql-e 命名空间:默认规范:端口:- 端口:1433 --- apiVersion:v1 种类:端点元数据:名称:mssql-e 命名空间:默认子集:- 地址:- ip:192.168.2.68 端口:- 端口:1433
  • @Jeroen Mostert 这就是你的意思 TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING 5028 TCP [::]:1433 [::]:0 LISTENING 5028

标签: sql-server kubernetes .net-core minikube


【解决方案1】:

感谢您的所有回复。 今天我找到了解决方案。它不是关于 k8s,而是关于防火墙设置。 我添加了入站规则以允许端口 1433。而且它

【讨论】:

    猜你喜欢
    • 2021-09-10
    • 2021-11-07
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多