从Kubernetes Pod访问SQL Server数据库

时间:2019-09-07 03:41:34

标签: kubernetes kubernetes-pod kubernetes-service kubernetes-deployment kubernetes-cluster

我部署的Spring引导应用程序尝试从Kubernetes Pod连接到外部SQL Server数据库。但是每次失败并显示错误

  

初始化池失败:与主机<>的TCP / IP连接,端口1443失败。
  错误:“连接超时:没有更多信息。
  验证连接属性。确保主机上正在运行SQL Server实例并在端口上接受TCP / IP连接。确保与端口的TCP连接没有被防火墙阻止。

我尝试执行到Pod中并成功ping数据库服务器而没有任何问题

以下是我尝试过的解决方案:

  1. 创建了服务和端点,并在配置文件中提供了DB IP,试图在Pod中启动应用程序

  2. 尝试在配置中使用Endpoint的内部IP代替DB IP,以查看内部IP已解析为DB IP

但是这两种情况都给出了相同的结果。以下是我用于创建服务和端点的Yaml。

---
apiVersion: v1
kind: Service
metadata:
  name: mssql
  namespace: cattle
spec:
  type: ClusterIP
  ports:
  - port: 1433
---
apiVersion: v1
kind: Endpoints
metadata:
  name: mssql
  namespace: cattle
subsets:
- addresses:
  - ip: <<DB IP>>
  ports:
  - port: 1433

如果我在此设置中有错或遗漏,请告诉我。

K8s设置的其他信息

  • 它是具有外部etcd集群拓扑的集群主控
  • 节点上的
  • OS是CentOS
  • 能够从所有节点和创建的Pod ping服务器

2 个答案:

答案 0 :(得分:1)

通过使用IP地址更新部署Yaml解决了该问题。由于所有服务器都在同一子网中,因此我不需要创建服务或端点来访问数据库。感谢您在帖子中的所有投入

答案 1 :(得分:0)

在这种情况下,无头服务非常有用。您无需定义端点即可将流量重定向到该ip。

kind: "Service"
apiVersion: "v1"
metadata:
  namespace: "your-namespace"
  name: "ftp"
spec:
  type: ExternalName
  externalName: your-ip
相关问题