我使用bitnami舵图将MongoDB作为一个副本集安装在我的K8S集群上,其中有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指南针进行访问.

我向前设置了一个端口(在27017处,我正在运行本地的MongoDB)

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

并try 将指南针与uri连接起来.

mongodb://localhost:27018

但这给了我一个错误

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

我用指南针连接我的K8S集群MongoDB做错了什么?


Update

% 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

values.yaml for bitnami helm chart

image:
  registry: docker.io
  repository: bitnami/mongodb
  digest: "sha256:916202d7af766dd88c2fff63bf711162c9d708ac7a3ffccd2aa812e3f03ae209" # tag: 4.4.15
  pullPolicy: IfNotPresent
architecture: replicaset
replicaCount: 2
updateStrategy:
  type: RollingUpdate
containerPorts:
  mongodb: 27017
auth:
  enabled: true
  rootUser: root
  rootPassword: "password"
  usernames: ["user"]
  passwords: ["userpass"]
  databases: ["db"]

service:
  portName: mongodb
  ports:
    mongodb: 27017

persistence:
  enabled: true
  accessModes:
    - ReadWriteOnce
  size: 8Gi

volumePermissions:
  enabled: true

livenessProbe:
  enabled: false
readinessProbe:
  enabled: false

推荐答案

我们刚刚重新创建了您的设置.一切都很好

$ k create ns mongo-test
namespace/mongo-test created

$ k -n mongo-test create -f Mongo-svc-sts.yaml
statefulset.apps/mongo created
service/mongo-headless created

结果

$ k -n mongo-test get all
NAME          READY   STATUS    RESTARTS   AGE
pod/mongo-0   1/1     Running   0          44s
pod/mongo-1   1/1     Running   0          40s
pod/mongo-2   1/1     Running   0          27s

NAME                     TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)     AGE
service/mongo-headless   ClusterIP   None         <none>        27017/TCP   13m

NAME                     READY   AGE
statefulset.apps/mongo   3/3     45s

端口转发

$ k -n mongo-test port-forward svc/mongo-headless 27018:27017
Forwarding from 127.0.0.1:27018 -> 27017
Forwarding from [::1]:27018 -> 27017
Handling connection for 27018
Handling connection for 27018
Handling connection for 27018
Handling connection for 27018
Handling connection for 27018
Handling connection for 27018
Handling connection for 27018
Handling connection for 27018
Handling connection for 27018
Handling connection for 27018
Handling connection for 27018
Handling connection for 27018

compass enter image description here

Mongo-svc-sts.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mongo
spec:
  serviceName: "mongo"
  replicas: 3
  selector:
    matchLabels:
      app.kubernetes.io/name: mongo
      app.kubernetes.io/component: backend
  template:
    metadata:
      labels:
        app.kubernetes.io/name: mongo
        app.kubernetes.io/component: backend
    spec:
      tolerations:
        - operator: Exists
      containers:
      - name: mongo
        image: mongo:latest
        args:
          - --bind_ip
          - 0.0.0.0
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 27017
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: mongo
    service: logging
  name: mongo-headless
spec:
  type: ClusterIP
  clusterIP: None
  ports:
  - port: 27017
  selector:
    app.kubernetes.io/name: mongo
    app.kubernetes.io/component: backend

为了能够帮助您,请使用该YAML并发布输出.如果它不工作,您可能应该调试您的K8S安装

Mongodb相关问答推荐

通过mongoDB中的查找从管道中删除被阻止的用户

当日期和时间在不同键的字符串中时,Mongo 查询过滤今天的数据

使用 multer 在我的 MERN 前端显示 MongoDB 图像的正确语法是什么?

MongoDB 聚合 groupBy 日期并计算子文档

按数组mongodb中的第一个元素排序

如何在 mongodb 中将一个方面的结果合并到一个有条件的列表中?

从嵌套数组中 id 匹配的另一个集合中获取所有字段

System.FormatException occurred in MongoDB.Bson.dll - XXX is not a valid 24 digit hex string

当属性确实存在时,为什么mongoose模型的 hasOwnProperty 返回 false?

如何在 Mongo 聚合管道中获取限制之前的计数

Java MongoDB FindOne 获取最后插入的记录

从 mongodb 中的副本配置重新开始

字段类型在 MongoDB 索引中是否重要?

Express 无法 PUT/DELETE 方法.出了什么问题?

MongoDB $or 查询

MongoDB Java API:put() 与 append()

Java Mongodb 正则表达式查询

查询 Mongoid/rails 3 中的嵌入对象(Lower than、Min 运算符和排序)

在 MongoDB 中为现有用户更改密码

Pymongo/bson:将 python.cursor.Cursor 对象转换为可序列化/JSON 对象