Маршрутизация между кластером Kubernetes и контейнером Docker в виртуальной машине - PullRequest
0 голосов
/ 30 ноября 2018

Я настроил кластер Kubernates на виртуальной машине (Ubuntu 18.04.1 LTS) в облаке Azure, используя предварительно настроенные сценарии .

Докер-контейнер MongoDB работает вместе с кластером K8s.Моя цель - подключить MongoDB к контейнеру CMS, который работает внутри K8.

Контейнеры Docker:

$ docker ps -a
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS              PORTS                       NAMES
3883f7b397cf        mongo                                 "docker-entrypoint.s…"   5 hours ago         Up 5 hours          0.0.0.0:27017->27017/tcp    mongodb
299239d90cbb        mirantis/kubeadm-dind-cluster:v1.12   "/sbin/dind_init sys…"   27 hours ago        Up 27 hours         8080/tcp                    kube-node-2
34c8bd5fad2e        mirantis/kubeadm-dind-cluster:v1.12   "/sbin/dind_init sys…"   27 hours ago        Up 27 hours         8080/tcp                    kube-node-1
15a2d6521e6e        mirantis/kubeadm-dind-cluster:v1.12   "/sbin/dind_init sys…"   27 hours ago        Up 27 hours         127.0.0.1:32768->8080/tcp   kube-master

Узлы Kubernates:

$ kubectl get services -o wide
NAME            TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE   SELECTOR
kubernetes      ClusterIP      10.96.0.1      <none>        443/TCP        26h   <none>
mycms           LoadBalancer   10.97.53.114   <pending>     80:31664/TCP   18s   app=mycms,tier=frontend

Служба Kubernates:

$ kubectl get services -o wide
NAME            TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE    SELECTOR
kubernetes      ClusterIP      10.96.0.1      <none>        443/TCP        26h    <none>
mycms           LoadBalancer   10.97.53.114   <pending>     80:31664/TCP   112s   app=mycms,tier=frontend

Модули Kubernates:

$ kubectl get pods -o wide
NAME                            READY   STATUS    RESTARTS   AGE    IP            NODE          NOMINATED NODE
mycms-dc4978ffc-khvj2           1/1     Running   0          4m8s   10.244.2.13   kube-node-1   <none>

IP-адрес контейнера MongoDB: 172.17.0.2

IP-адрес главного контейнера Kubernates: 10.192.0.2

KubernatesIP-адрес контейнера узла 1 - 10.192.0.3

IP-адрес контейнера узла 2 Kubernates - 10.192.0.4

Поскольку модуль CMS работает на 10.244.2.13, который находится внутри контейнера k8s.

Для тестирования я установил на хосте mongo-client и протестировал соединение, которое работает хорошо.

Но CMS не достигает контейнера MongoDB (я передаю Mongo String в pod в переменной среды).

Журнал модуля CMS

MongoError: failed to connect to server [172.17.0.2:27017] on first connect [MongoError: connect EHOSTUNREACH 172.17.0.2:27017]

Как маршрутизировать контейнер MongoDB и контейнер CMS?Что-то не так / упущено в моем подходе?

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.Спасибо!

1 Ответ

0 голосов
/ 03 декабря 2018

Вам необходимо использовать IP-адрес хоста, на котором установлен Docker, а не внутренний IP-адрес контейнера MongoDB, чтобы подключиться к MongoDB из кластера Kubernetes или сформировать любой другой хост.По результатам вашего docker ps -a вы выставили порт 27017 для контейнера MongoDB, поэтому следует использовать <hostIP>:27017, а не 172.17.0.2:27017.

По умолчанию в Kubernetes нет ограниченийподключиться за пределами кластера.

Кроме того, в Azure могут быть правила брандмауэра, запрещающие соединения между хостами.

...