Kubernetes подключиться к внешней MongoDB - PullRequest
0 голосов
/ 26 марта 2020

У меня есть приложение весенней загрузки, которое работает в кластере 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...