【问题标题】:How to connect to mongodb replicaset (k8s) using compass如何使用指南针连接到 mongodb replicaset (k8s)
【发布时间】:2022-11-17 00:49:51
【问题描述】:

我使用 bitnami helm chart 在我的 k8s 集群上将 mongodb 安装为具有 3 个副本的副本集。

所以我得到了这些豆荚:

mongodb-0.mongodb-headless.mongodb.svc.cluster.local:27017
mongodb-1.mongodb-headless.mongodb.svc.cluster.local:27017
mongodb-2.mongodb-headless.mongodb.svc.cluster.local:27017

现在我想使用 mongodb compass 访问。

我设置了一个端口转发(在 27017 我正在运行本地 mongodb)

kubectl port-forward svc/mongodb-headless -n mongodb 27018:27017

并尝试将指南针与 uri 连接

mongodb://localhost:27018

但这给了我错误

getaddrinfo ENOTFOUND mongodb-0.mongodb-headless.mongodb.svc.cluster.local

使用指南针连接到我的 k8s 集群 mongodb 我做错了什么?


更新

% kubectl get all -n mongodb

NAME                    READY   STATUS    RESTARTS   AGE
pod/mongodb-0           1/1     Running   0          25h
pod/mongodb-1           1/1     Running   0          25h
pod/mongodb-2           1/1     Running   0          25h
pod/mongodb-arbiter-0   1/1     Running   0          2d14h

NAME                               TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)     AGE
service/mongodb-arbiter-headless   ClusterIP   None         <none>        27017/TCP   2d14h
service/mongodb-headless           ClusterIP   None         <none>        27017/TCP   2d14h

NAME                               READY   AGE
statefulset.apps/mongodb           3/3     2d14h
statefulset.apps/mongodb-arbiter   1/1     2d14h

【问题讨论】:

  • 请为您的 ns 提供所有输出,即 kubectl get all 显示 svc YAML 也很有用
  • @KonstantinVustin 我已将结果添加到帖子中

标签: mongodb kubernetes mongodb-compass mongodb-replica-set


【解决方案1】:

据我所知(和我使用的),不可能使用端口转发将 mongo 副本集与 Compass 连接(你不能使用本地端口两次或更多次......) 对我来说,因为指南针使用副本集使用的拓扑。因此,您需要符合客户端计算机的拓扑结构。

因此,您可以使用集群 IP 公开 mongo pod,管理您的主机文件以匹配 kubernetes 节点。

并像在 kubernetes 中一样使用标准连接字符串:

【讨论】:

    猜你喜欢
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    相关资源
    最近更新 更多