Я хотел бы подключить мое развертывание 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 через собственный порт драйвера."
Так что я думаю, что безголовый сервис, который я создал ранее, способен маршрутизировать трафик
Нужен ваш совет.