Ошибка подключения Монго внутри контейнера Монго - PullRequest
1 голос
/ 11 марта 2019

Я пытаюсь организовать кластер MongoDB внутри Kubernetes, работая с StatefulSets и Headless Services.Уже давно я пытаюсь выяснить, что в этом плохого, но не могу найти ничего, что я мог бы использовать.

Во время своего исследования я нашел этот репозиторий , который я клонировал и адаптировалв случае использования.Вы можете найти один из манифестов (один для экземпляра mongoS) прямо здесь .

Затем я запускаю скрипт generate.sh, поставляемый в репозитории, но со всем, что связано с gcloud или persistentVolume, с комментариями, оставляя только процессы порождения statefulSet / Service.Кажется, все работает нормально, но всякий раз, когда скрипт достигает блока

# Wait for the mongos to have started properly
echo "Waiting for the first mongos to come up (`date`)..."
echo " (IGNORE any reported not found & connection errors)"
echo -n "  "
until kubectl --v=0 exec mongos-router-0 -c mongos-container -- mongo --quiet --eval 'db.getMongo()'; do
    sleep 2
    echo -n "  "
done
echo "...first mongos is now running (`date`)"
echo

, он просто выдает это сообщение об ошибке безразлично:

2019-03-11T14:02:03.531+0000 E QUERY    [js] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused :
connect@src/mongo/shell/mongo.js:343:13
@(connect):1:21
exception: connect failed
command terminated with exit code 1

Таким образом, я пытался запустить mongo изнутристручок напрямую, но такая же ошибка произошла.Затем я просто попытался запустить mongo, используя разные порты прямо внутри контейнера, запустив mongo --port 27018 (также пробовал 27019 и 27020), просто чтобы посмотреть, какие ошибки он дает с незащищенными портами, и кажется, что это даетта же ошибка.

Как я могу запустить mongo внутри контейнера с запущенными mongos на порту 27017?Кажется, мне нужно запустить mongod перед запуском оболочки mongo, даже если mongos уже запущен.Это действительно ошеломляет, и я чувствую, что что-то упустил.У меня есть только эта ошибка внутри модулей mongos, в то время как mongo-configdb и mongod-maindb, кажется, работают гладко (и запуск оболочки mongo внутри них не дает никаких ошибок. Более того, при выполнении rs.status() внутри одного из нихработает нормально).

Вы можете найти там mongos журналов там .

TL; DR Как я могу запустить Монго внутри контейнерас работающими монго на порту 27017?

NB: Я использую образ mongo: 3.6 из официального репозитория dockerhub.

1 Ответ

1 голос
/ 11 марта 2019

Я не очень понимаю, почему, но изменение работающего порта с 27017 на 27020 работало нормально. Если кто-то проходит мимо и может объяснить, как, я был бы рад услышать его / ее объяснение как netstat -tunelp (а также ps aux), в то время как привязка порта 27017 на обоих моих узлах k8s не дает никакого вывода, связанного с портом 27017 ...

...