Я развернул mongoDB на Kubernetes. База данных настроена правильно, и к ней можно получить доступ, используя ее внутреннее DNS-имя.
Мне нужно показать это внешнему миру. Я использовал порт узла / балансировщик нагрузки, чтобы открыть порт 27017, но я не могу подключиться к порту с помощью IP: port. Не сталкивался с проблемой с веб-приложениями, использующими IP: Port, не знаю, как это сделать для базы данных.
Если попытался открыть браузер, http: // Kubernetes_Public_IP: NodePort дает мне следующее сообщение об ошибке - Похоже, вы пытаетесь получить доступ к MongoDB через HTTP через собственный порт драйвера.
Я использую robomongo для подключения к базе данных. С помощью RoboMongo, установив Address на Kubernetes Public IP, а Port на NodePort, я получаю следующую ошибку: Невозможно подключиться к Kubernetes_Public_IP: NodePort
Нужна помощь в открытии порта и подключении к нему с помощью любого агента (robomongo не требуется).
В Kubernetes, если вы хотите открыть порт для внешнего мира, вы можете использовать Service с типом NodePort или LoadBalancer.
Тип LoadBalancer обычно используется у облачных провайдеров, поскольку они предоставляют внешние балансировщики нагрузки для Kubernetes.
Итак, в вашем случае NodePort - это самый простой способ раскрыть порт. Вот пример службы YAML:
kind: Service
apiVersion: v1
metadata:
name: mongodb-service
spec:
type: NodePort
selector:
app: mongodb
ports:
- port: 27017
nodePort: 32463
name: MongoPort
В линию port: 27017
, мы указали ваш порт MongoDB, он также обычно указывается в Deployment for MongoDB.
В линию nodePort: 32463
, мы указали внешний порт. Туда можно выложить любой порт из диапазона 30000-32767. Или его можно пропустить во время создания, в этом случае Kubernetes назначает номер порта автоматически, и вы можете найти его, используя kubectl describe service mongodb-service
или kubectl get service mongodb-service -o yaml
команды.
После этого вы можете использовать любой клиент, например RoboMongo, чтобы связаться с вами, MongoDB. Вам нужно использовать IP-адрес любого узла и порт из nodePort
линия, а не от port
линия.
Например, если у вас есть кластер с тремя узлами с внешними IP-адресами 12.13.14.151, 12.13.14.152, 12.13.14.153, вы можете использовать любой из 12.13.14.151:32463
, 12.13.14.152:32463
, 12.13.14.153:32463
в настройках подключения к RoboMongo.
Для получения дополнительной информации об Услугах вы можете перейти по следующей ссылке: