невозможно создать реплику чтения для mongodb с помощью statefulset и sidecar - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь сделать мой существующий mongodb высокодоступным, создавая реплики. для этого я взял ссылку введите описание ссылки здесь

мой набор с отслеживанием состояния

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: skeleton-mongodb
spec:
  serviceName: skeleton-mongodb
  replicas: 3
  selector:
    matchLabels:
      app: skeleton-mongodb
  template:
    metadata:
      labels:
        app: skeleton-mongodb
    spec:
      containers:
        - name: mongodb
          image: mongo:4
          resources:
            requests:
              memory: 250Mi
              cpu: 100m
            limits:
              memory: 500Mi
          ports:
            - containerPort: 27017
              name: mongo
          args:
            - "--bind_ip_all"
            - "--replSet"
            - rs0
          volumeMounts:
            - name: skeleton-mongodb-data
              mountPath: /data/db
            - name: skeleton-mongodb-init
              mountPath: /docker-entrypoint-initdb.d
          env:
            - name: MONGO_INITDB_ROOT_USERNAME
              valueFrom:
                configMapKeyRef:
                  name: skeleton
                  key: mongo_root-username
            - name: MONGO_INITDB_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: skeleton
                  key: mongodb_root-password
            - name: MONGO_INITDB_DATABASE
              valueFrom:
                configMapKeyRef:
                  name: skeleton
                  key: mongo_db
            - name: MONGO_USERNAME
              valueFrom:
                configMapKeyRef:
                  name: skeleton
                  key: mongo_username
            - name: MONGO_USER_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: skeleton
                  key: mongodb_user-password
        - name: mongo-sidecar
          image: cvallance/mongo-k8s-sidecar
          env:
            - name: MONGO_SIDECAR_POD_LABELS
              value: "app=skeleton-mongodb"
            - name: MONGODB_DATABASE
              valueFrom:
                configMapKeyRef:
                  name: skeleton
                  key: mongo_db
            - name: MONGODB_USERNAME
              valueFrom:
                configMapKeyRef:
                  name: skeleton
                  key: mongo_username
            - name: MONGODB_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: skeleton
                  key: mongodb_user-password
      volumes:
      - name: skeleton-mongodb-init
        configMap:
          name: common-mongodb-init
  volumeClaimTemplates:
    - metadata:
        name: skeleton-mongodb-data
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 10Gi
        storageClassName: managed-premium

Когда я пытаюсь определить, какой из них является моим хозяином, я не могу найти ни одного модуля в качестве мастера.

for ((i = 0; i < 3; ++i)); 
do 
   kubectl exec --namespace default skeleton-mongodb-$i -- sh -c 'mongo --eval="printjson(rs.isMaster())"'; 
done

я получаю за все 3 капсулы

{
        "ismaster" : false,
        "secondary" : false,
        "info" : "Does not have a valid replica set config",
        "isreplicaset" : true,
        ....
        "readOnly" : false,
        "ok" : 1
}

не уверен, что я что-то упустил

1 Ответ

0 голосов
/ 05 апреля 2019

Я не знаю MongoDB достаточно, чтобы советовать, но с StatefulSet у вас будет одинаковая конфигурация для всех реплик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...