Error when creating a mongodb replicaset - shows unrecognized option '--smallfiles'

8/14/2019

I am creating the below mongodb statefulset which creates 3 replicas but when I run the code I get the below error and all pods are in CrashLoopBackOff state.

This is the error which I get when I try kubectl create -f

Error parsing command line: unrecognised option '--smallfiles' 
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
 name: mongo
 namespace: microservice1
spec:
 serviceName: "mongo"
 replicas: 3
 template:
   metadata:
     labels:
       role: mongo
       environment: test
   spec:
     terminationGracePeriodSeconds: 10
     containers:
       - name: mongo
         image: mongo
         command:
           - mongod
           - "--replSet"
           - rs0
           - "--smallfiles"
           - "--noprealloc"
         ports:
           - containerPort: 27017
         volumeMounts:
           - name: mongo-persistent-storage
             mountPath: /data/db
       - name: mongo-sidecar
         image: cvallance/mongo-k8s-sidecar
         env:
           - name: MONGO_SIDECAR_POD_LABELS
             value: "role=mongo,environment=test"
     volumes:
      - name: mongo-persistent-storage
        flexVolume:
          driver: rook.io/rook
          fsType: ceph
          options:
            fsName: myfs # name of the filesystem specified in the filesystem CRD.
            clusterNamespace: rook # namespace where the Rook cluster is deployed
            clusterName: rook
-- jeril
kubernetes
kubernetes-statefulset
mongodb

2 Answers

8/14/2019

--smallfiles is not supported in newest mongo (4.2) you can check it in doc, you are not specifying image tag so newest latest is pull in this case mongo 4.2.

If you set image: mongo:4.0 your configuration should be correct.

-- FL3SH
Source: StackOverflow

8/14/2019

Try removing the small file or else please try the block below i have provided.

apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app: mongodb-replicaset
    name: logs-mongodb-replicaset
spec:
  podManagementPolicy: OrderedReady
  replicas: 3
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: mongodb-replicaset
  serviceName: logs-mongodb-replicaset
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: mongodb-replicaset
    spec:
      containers:
      - args:
        - --config=/data/configdb/mongod.conf
        - --dbpath=/data/db
        - --replSet=rs0
        - --port=27017
        - --bind_ip=0.0.0.0
        command:
        - mongod
        image: mongo:3.6
        imagePullPolicy: IfNotPresent
        livenessProbe:
          exec:
            command:
            - mongo
            - --eval
            - db.adminCommand('ping')
          failureThreshold: 3
          initialDelaySeconds: 30
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 5
        name: mongodb-replicaset
        ports:
        - containerPort: 27017
          name: peer
          protocol: TCP
        readinessProbe:
          exec:
            command:
            - mongo
            - --eval
            - db.adminCommand('ping')
          failureThreshold: 3
          initialDelaySeconds: 5
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /data/db
          name: datadir
        - mountPath: /data/configdb
          name: configdir
        - mountPath: /work-dir
          name: workdir
-- Harsh Manvar
Source: StackOverflow