问题描述
我有一个kubernetes集群,该集群包含我的应用程序和一个数据库,我在一个单独的VM实例(位于集群外部)上托管该数据库。数据库应该在端口27017上侦听(我使用netstat确认了)。我希望群集中的服务能够连接到该数据库。我收到有关连接超时的错误。这使我相信a)集群中的服务发现无法正常工作(很可能是配置问题),或者b)某些防火墙阻止了我的请求。
为了允许我的外部数据库被发现,我为数据库定义了一个服务和一个自定义端点。服务定义如下:
kind: Service
apiVersion: v1
Metadata:
name: db-service
namespace: production
spec:
ports:
- protocol: TCP
port: 27017
targetPort: 27017
这是端点定义:
kind: Endpoints
apiVersion: v1
Metadata:
name: db-service
namespace: production
subsets:
- addresses:
- ip: <internal-ip>
ports:
- port: 27017
我尝试使用外部和内部ip来定义端点(使用内部ip对我来说最有意义)。
在托管数据库的VM实例上,我仅有的网络标签是“ http-server”和“ https-server”(允许http / https通信的默认标签)。
在我的方法中,什么是阻止托管在VM实例上的数据库接收来自群集节点的请求?
解决方法
原来我的数据库没有监听远程连接(对于postgresql,请查看pg_hba.conf和postgresql.conf)。