В проекте GCP у меня есть архитектура K8s, включающая 2 кластера.
- один кластер для микросервисов
- один кластер для mongodb
Я проверил свой кластер mongodb изнутри и убедился, что он работает как задумано.
То, что я пытаюсь сделать сейчас, это подключиться из модуля в другом кластере. Я показал сервис монго, используя порт узла в кластере mongodb :
apiVersion: v1
kind: Service
metadata:
labels:
name: mongo
name: mongodb-service
annotations:
cloud.google.com/load-balancer-type: "Internal"
spec:
externalTrafficPolicy: Local
ports:
- name: port-mongodb
port: 27017
protocol: TCP
targetPort: 27017
selector:
role: mongo
sessionAffinity: None
type: NodePort
С IP моего mongodb кластера:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://35.240.47.130
name: gke_myproject_europe-west1-b_mongodb
И порт моего NodePort:
mongodb-service NodePort 10.3.248.249 <none> 27017:32752/TCP 6m
Из нового модуля с python в кластер microservice (точно такой же, какой я использовал для тестирования кластера mongodb изнутри), я выполняю следующий скрипт на python:
from pymongo import MongoClient
client = MongoClient("mongodb://login:pass@35.240.47.130:32752")
database = client["testdb"]
collection = database["testcollection"]
inserted_id =
collection.insert_one({"moonlight":"sonata"}).inserted_id
Результатом всегда является ошибка:
pymongo.errors.ServerSelectionTimeoutError: mongo:32752: timed out
Что я делаю не так?
UPDATE
Кроме того, вот некоторые тесты nslookup из кластера microservices . Во-первых, я проверяю IP службы сервиса mongodb NodePort
root@pybbox-55bdc76ddb-nw5gm:/# nslookup 10.3.248.249
Server: 10.35.240.10
Address: 10.35.240.10#53
** server can't find 249.248.3.10.in-addr.arpa: NXDOMAIN
Кроме того, я проверяю, видит ли кластер другой, используя IP-адрес кластера.
root@pybbox-55bdc76ddb-nw5gm:/# nslookup 35.240.47.130
Server: 10.35.240.10
Address: 10.35.240.10#53
Non-authoritative answer:
130.47.240.35.in-addr.arpa name = 130.47.240.35.bc.googleusercontent.com.
Authoritative answers can be found from: