我部署的 Spring Boot 应用程序试图从 Kubernetes Pod 连接到外部 SQL Server 数据库。但是每次它都因错误而失败
初始化池失败:与主机 <>、端口 1443 的 TCP/IP 连接失败。
错误:“连接超时:没有更多信息。
验证连接属性。确保 SQL Server 实例正在主机上运行并在端口接受 TCP/IP 连接。确保与端口的 TCP 连接未被阻止通过防火墙。
我尝试执行到 Pod 并成功 ping 数据库服务器,没有任何问题
以下是我尝试过的解决方案:
创建了一个服务和端点,并在配置文件中提供了数据库 IP 尝试在 Pod 中启动应用程序
尝试在配置中使用 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 集群拓扑的集群主节点
- 节点上的操作系统是 CentOS
- 能够从所有节点和创建的 Pod ping 服务器