Невозможно создать набор реплик mongodb на модуле kubernetes. - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь создать набор реплик MongoDB для kubernetes. У меня есть пространство имен «global», и я развернул в нем mongodb, и я показал модуль MongoDB, используя безголовый сервис.

Файл развертывания выглядит следующим образом -

apiVersion: v1
kind: Service
metadata:
  name: mongodb
  namespace: global
spec:
  selector:
    app: mongodb
  ports:
  - port: 27017
  clusterIp: None

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongodb
  namespace: global
spec:
  selector:
    matchLabels:
      app: mongodb
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      containers:
      - name: mongodb
        image: mongo:4.2.1
        args: ["mongod","--replSet", "rs0","--bind_ip","mongodb.global.svc.cluster.local:27017, localhost"]
        resources:
          limits:
            memory: "128Mi"
            cpu: "500m"
        ports:
        - containerPort: 27017

Теперь, если вы посмотрите на аргументы, я связываю mongodb.global.svc.cluster.local:27017 и localhost с модулем Монго, которые в основном являются интерфейсами, на которых Монго будетСлушать. Здесь я предполагаю, что - mongodb.global.svc.cluster.local:27017 этот адрес будет разрешен для IP-адреса pod, потому что [service_name]. [Namespace] .svc.cluster.local должен разрешать IP-адрес pod в соответствии с документацией kubernetes (в случае безголового обслуживания, котороедело тут).

Чтобы запустить реплику (в соответствии с документацией ), я должен выполнить exe в модуле и запустить следующее через оболочку mongo

rs.initiate(
   {
      _id: "rs0",
      version: 1,
      members: [
         { _id: 0, host : "mongodb.global.svc.cluster.local:27017" },
      ]
   }
)

Но это выдает следующееошибка

{
        "operationTime" : Timestamp(0, 0),
        "ok" : 0,
        "errmsg" : "No host described in new configuration 1 for replica set rs0 maps to this node",
        "code" : 93,
        "codeName" : "InvalidReplicaSetConfig",
        "$clusterTime" : {
                "clusterTime" : Timestamp(0, 0),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        }
}

Я не знаю, что я делаю не так, предполагается, что хост легко обнаружить, но этого не происходит.

1 Ответ

0 голосов
/ 25 октября 2019

Здесь я вижу 2 варианта:

  1. Запустите hostname() и myPort() в оболочке mongo, чтобы убедиться, что она соответствует значению, которое вы используете для 'host' в initiateКоманда

  2. Запустите rs.initiate() без каких-либо параметров, по умолчанию будет использоваться имя набора реплик из параметра командной строки версии 1 и собственный хост: порт

...