несколько внешних имен в сервисе kubernetes для доступа к внешнему удаленному хосту mongodb с помощью строки подключения - PullRequest
0 голосов
/ 05 марта 2019

Я хотел бы подключить мое развертывание Kubernetes к удаленной базе данных с URI.

Я могу подключиться к удаленной базе данных с помощью URI с помощью Docker.Теперь я хотел бы понять, как я могу указать несколько внешних имен в служебном файле Kubernetes.

У меня есть MongoDB кластер с указанным ниже URL:

mongodb://username:password@mngd-new-pr1-01:27017,mngd-new-pr2-02:27017,mngd-new-pr3-03:27017/

Я следовал Рекомендации Kubernetes: отображение внешних служб .Когда я настраиваю одно внешнее имя, оно работает.

Как мне указать все 3 кластера во внешнем имени?

kind: Service
apiVersion: v1
metadata:
 name: mongo
spec:
  type: ExternalName
  externalName: mngd-new-pr1-01,mngd-new-pr2-02,mngd-new-pr3-03
  ports:
  - port: 27017

, поскольку мне не удалось создать несколько внешних имен.

Я пошел с созданием автономного сервиса, а затем создал конечные точки для сервиса. Как описано «Сценарий 1: База данных вне кластера с IP-адресом»

Из журналов я думаю, что соединениеустанавливаетсяно позже возникло исключение, как показано ниже, и оно было отключено.

2019-03-20 11: 26: 13.941 INFO 1 --- [38.200.19: 27038] org.mongodb.driver.connection: Открытое соединение[connectionId {localValue: 1, serverValue: 386066}] по .38.200.19: 27038 2019-03-20 11: 26: 13.953 INFO 1 --- [.164.29.4: 27038] org.mongodb.driver.connection:Открытое соединение [connectionId {localValue: 2, serverValue: 458254}] с .164.29.4: 27038 2019-03-20 11: 26: 13.988 INFO 1 --- [38.200.19: 27038] org.mongodb.driver.cluster: Поток монитора успешно подключен к серверу с описанием ServerDescription {address = .38.200.19: 27038, тип = REPLICA_SET_PRIMARY, состояние = CONNECTED, ok = true, версия = ServerVersion {versionList = [3, 6, 8]}, minWireVersion = 0, maxWireVersion = 6, maxDocumentSize = 16777216, logicSessionTimeoutMinutes = 30, roundTripTimeNanos = 45440955, setName = 'no-prd-rep', canonicalAddress = mngd-new-pr1-01: 27038, hosts = [mngd-new-pr1-01:27038, mngd-new-pr1-02: 27038, mngd-new-pr1-03: 27038], пассивы = [], арбитры = [],primary = 'mngd-new-pr1-01: 27038' 2019-03-20 11: 26: 13.990 INFO 1 --- [38.200.19: 27038] org.mongodb.driver.cluster: Добавление обнаруженного сервера mngd-new-pr1-01: 27038 к клиентскому представлению кластера 2019-03-20 11: 26: 13.992 INFO 1 --- [38.200.19: 27038] org.mongodb.driver.cluster: Добавление обнаруженного сервера mngd-new-pr1-02: 27038 в клиентское представление кластера 2019-03-20 11: 26: 13.993 INFO 1 --- [38.200.19: 27038] org.mongodb.driver.cluster: Добавление обнаруженного сервера mngd-new-pr1-03: 27038 впредставление клиента кластера 2019-03-20 11: 26: 13.997 ИНФОРМАЦИЯ 1 --- [38.200.19: 27038] org.mongodb.driver.cluster: Сервер 102.227.4: 27038 больше не является членом набора реплик.Удаление из клиентского представления кластера.2019-03-20 11: 26: 14.001 ИНФО 1 --- [.164.29.4: 27038] org.mongodb.driver.cluster: Поток монитора успешно подключен к серверу с описанием ServerDescription {address = .164.29.4: 27038,type = REPLICA_SET_SECONDARY, state = CONNECTED, ok = true, версия = ServerVersion {versionList = [3, 6, 8]}, minWireVersion = 0, maxWireVersion = 6, maxDocumentSize = 16777216, logicSessionTimeoutMinutes = 30, roundTripTimeNanos = 47, roundTripTimeNanos = 47, roundTripTimeNanos = 47, roundTripTimeNanos = 47, roundTripTimeNanos = 47, roundTripTimeNanos = 47, roundTripTimeNanos = 47, roundTripTimeNanosno-prd-rep ', canonicalAddress = mngd-new-pr1-01: 27038, hosts = [mngd-new-pr1-01: 27038, mngd-new-pr1-02: 27038, mngd-new-pr1-03:27038], passives = [], арбитры = [], primary = 'mngd-new-pr1-01: 27038', 2019-03-20 11: 26: 14.001 INFO 1 --- [38.200.19: 27038] org.mongodb.driver.cluster: Server 38.200.19: 27038 больше не является членом набора реплик.Удаление из клиентского представления кластера.2019-03-20 11: 26: 14.001 ИНФОРМАЦИЯ 1 --- [38.200.19: 27038] org.mongodb.driver.cluster: Сервер 164.29.4: 27038 больше не является членом набора реплик.Удаление из клиентского представления кластера.2019-03-20 11: 26: 14.001 ИНФОРМАЦИЯ 1 --- [38.200.19: 27038] org.mongodb.driver.cluster: Канонический адрес mngd-new-pr1-01: 27038 не соответствует адресу сервера.Удаление .38.200.19: 27038 из клиентского кластера 2019-03-20 11: 26: 34.012 INFO 1 --- [2-prd2-01: 27038] org.mongodb.driver.cluster: исключение в потоке монитора при подключениик серверу mngd-new-pr1-01: 27038com.mongodb.MongoSocketException: mngd-new-pr1-01: имя или служба, неизвестная на com.mongodb.ServerAddress.getSocketAddress (http://ServerAddress.java:188) ~ [mongodb-driver-core-3.6.4.jar! /: na]

Таким образом, поскольку мы используем конечные точки в качестве IP-адреса, и они не совпадают со строкой соединения, указанной в строке соединения развертывания yaml, может произойти сбой.Меня очень смущает :)

PS: для проверки подключения к внешнему кластеру Монго я запустил один модуль

apiVersion: v1 вид: Pod метаданные: имя: proxy-chk spec:контейнеры: - имя: centos изображение: команда centos: ["/ bin / sh", "-c", "while:; do curl -L http://${MONGODBendpointipaddress}:27038/; sleep 10; done"]

в логахЯ вижу, что он может установить связь.

"Похоже, вы пытаетесь получить доступ к MongoDB через HTTP через собственный порт драйвера."

Так что я думаю, что безголовый сервис, который я создал ранее, способен маршрутизировать трафик

Нужен ваш совет.

1 Ответ

0 голосов
/ 05 марта 2019

Одной альтернативой может быть создание одного сервисного сервиса для каждого хоста mongo, но это побеждает абстракцию, если вам нужно добавить больше хостов в будущем.

...