У меня есть приложение весенней загрузки, которое работает в кластере Kubernetes (GKE), и у меня есть база данных, которая находится на экземпляре в том же VP C, что и кластер Kubernetes. Я настроил это как упомянуто здесь . Но я не могу подключиться к БД. Выдает ошибку ниже при запуске приложения
com.mongodb.MongoSocketOpenException: Exception opening socket
at com.mongodb.connection.SocketStream.open(SocketStream.java:63) ~[mongodb-driver-core-3.4.3.jar!/:na]
at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115) ~[mongodb-driver-core-3.4.3.jar!/:na]
at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:113) ~[mongodb-driver-core-3.4.3.jar!/:na]
at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Caused by: java.net.SocketTimeoutException: connect timed out
at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:na]
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399) ~[na:na]
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242) ~[na:na]
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224) ~[na:na]
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403) ~[na:na]
at java.base/java.net.Socket.connect(Socket.java:609) ~[na:na]
at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:57) ~[mongodb-driver-core-3.4.3.jar!/:na]
at com.mongodb.connection.SocketStream.open(SocketStream.java:58) ~[mongodb-driver-core-3.4.3.jar!/:na]
... 3 common frames omitted
Также я попытался пропинговать базу данных из контейнера docker, используя имя службы
bash-5.0# ping mongodb
PING mongodb (10.64.2.221): 56 data bytes
Когда я пытался напрямую пропинговать, используя внутренний ip экземпляра адрес, я могу пропинговать адрес, но когда я попытался использовать IP-адрес из приложения (spring.data.mongodb.host), он также не работал.
bash-5.0# ping 10.60.0.13
PING 10.60.0.13 (10.60.0.13): 56 data bytes
64 bytes from 10.60.0.13: seq=0 ttl=62 time=1.317 ms
64 bytes from 10.60.0.13: seq=1 ttl=62 time=0.315 ms
64 bytes from 10.60.0.13: seq=2 ttl=62 time=0.385 ms
64 bytes from 10.60.0.13: seq=3 ttl=62 time=0.278 ms
64 bytes from 10.60.0.13: seq=4 ttl=62 time=0.300 ms
Пн go Служба YAML
---
apiVersion: v1
kind: Service
metadata:
name: mongodb
spec:
ports:
- port: 27017
targetPort: 27017
---
kind: Endpoints
apiVersion: v1
metadata:
name: mongodb
subsets:
- addresses:
- ip: 10.164.0.1
ports:
- port: 27017
Развертывание YAML
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-service
spec:
replicas: 1
selector:
matchLabels:
app: test-service
template:
metadata:
labels:
app: test-service
spec:
containers:
- name: test-service
image: gcr.io/rrr-test-project/test-service:latest
ports:
- containerPort: 8080
env:
- name: MONGO_HOST
value: mongodb
application.yml в приложении Spring
spring:
# Database
data:
mongodb:
host: ${MONGO_HOST:10.164.0.1}
port: 27017
database: test