6

我通过 helm 包在我的 kubernetes 集群中部署了多个 Mongo db 实例。它们在 NodePort 中作为服务运行。如何从集群外部通过 MongoDB Compass 和 RoboMongo 等 UI 工具连接到那些 Mongo db 实例?任何帮助表示赞赏。

4

4 回答 4

10

您可以使用kubectl port-forward从集群外部连接到 MongoDB。

运行kubectl port-forward << name of a mongodb pod >> --namespace << mongodb namespace >> 27018:27018
现在将您的 UI 工具指向localhost:27018并将kubectl所有连接转发到集群内的 pod。

从 Kubernetes 1.10+ 开始,您还可以使用此语法连接到服务(您不必先找到 pod 名称):
kubectl port-forward svc/<< mongodb service name >> 27018:27018 --namespace << mongodb namespace>>

于 2018-08-06T15:27:07.103 回答
1

如果它不是您的生产数据库,您可以通过 NodePort 服务公开它:

# find mongo pod name
kubectl get pods
kubectl expose pod <<pod name>> --type=NodePort
# find new mongo service
kubectl get services

最后一个命令将输出类似

mongodb-0   10.0.0.45    <nodes>       27017:32151/TCP   30s

现在您可以使用以下命令访问您的 mongo 实例mongo <<node-ip>>:32151

于 2019-05-23T07:31:32.167 回答
0

获取与 mongo db 关联的服务:
kubectl get services -n <namespace>

端口转发使用: kubectl port-forward service/<service_name> -n <namespace> 27018:27017

打开 Robomongolocalhost:27018

于 2021-10-21T06:43:39.983 回答
0

如果未解决,请将您的 mongo 工作负载公开为负载均衡器并使用服务提供的 IP。复制LB IP并在robo3T中使用。如果它需要身份验证,请检查下面的我的 YAML 文件:

apiVersion: apps/v1
kind: Deployment
metadata:
    name: mongodb
    labels:
        app: mongodb
spec:
    replicas: 1
    selector:
        matchLabels:
            app: mongodb
    template:
        metadata:
            labels:
                app: mongodb
        spec:
            containers:
                - name: mongodb
                  image: mongo
                  volumeMounts:
                      - name: data
                        mountPath: "/data/db"
                        subPath: "mongodb_data"
                  ports:
                      - containerPort: 27017
                        protocol: TCP
                  env:
                      - name: MONGO_INITDB_ROOT_USERNAME
                        value: xxxx
                      - name: MONGO_INITDB_ROOT_PASSWORD
                        value: xxxx
            imagePullSecrets:
                - name: xxxx
            volumes:
                - name: data
                  persistentVolumeClaim:
                      claimName: xxx

在 ROBO3T 的身份验证选项卡中设置相同的值

注意:我没有在 YAML 中提到服务部分,因为我在 GCP UI 本身中直接暴露为 LB。

于 2020-07-23T12:05:11.363 回答