MongoDB ConfigMap 未安装在 Kubernetes Pod 中的 /etc/mongod.conf

问题描述 投票:0回答:1

我正在尝试在 Kubernetes 中设置 MongoDB StatefulSet,并使用 ConfigMap 将

mongod.conf
文件挂载到位于
/etc/mongod.conf
的容器中。

我创建了 ConfigMap,如下所示:

kubectl create configmap mongo-config --from-file=mongod.conf

在我的 StatefulSet 配置 (mongo-config.yaml) 中,我指定卷挂载如下:

volumeMounts:
  - name: mongo-config-storage
    mountPath: /data/db
  - name: mongo-config-file
    mountPath: /etc/mongod.conf
    subPath: mongod.conf

StatefulSet中volumes部分的相关部分是:

volumes:
  - name: mongo-config-file
    configMap:
      name: mongo-config

当我创建 StatefulSet 时,pod 会进入

CrashLoopBackOff
,当我检查临时 pod (
kubectl run -i --tty --rm debug --image=mongo -- bash
) 时,我发现
/etc/mongod.conf
不存在。相反,我看到一个名为
/etc/mongod.conf.orig
.

的文件

我尝试过的:
验证 ConfigMap 已正确创建。
检查 Pod 描述中的卷安装情况。
确认 StatefulSet 配置中的路径和名称。

mongo-config.yaml

apiVersion: v1
kind: Service
metadata:
  name: mongo-config-service
spec:
  ports:
    - port: 27017
  clusterIP: None
  selector:
    role: mongo-config

---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mongo-config
spec:
  serviceName: "mongo-config-service"
  replicas: 3
  selector:
    matchLabels:
      role: mongo-config
  template:
    metadata:
      labels:
        role: mongo-config
    spec:
      imagePullSecrets:
        - name: myregistrykey
      containers:
        - name: mongo
          image: mongo:latest
          command:
            - mongod
            - "--config"
            - "/etc/mongod.conf"   
            - "--configsvr"
            - "--replSet"
            - "configReplSet"
          ports:
            - containerPort: 27017
          volumeMounts:
            - name: mongo-config-storage
              mountPath: /data/db
            - name: mongo-config-file
              mountPath: /etc/mongod.conf
              subPath: mongod.conf  
      volumes:
        - name: mongo-config-file
          configMap:
            name: mongo-config
  volumeClaimTemplates:
    - metadata:
        name: mongo-config-storage
      spec:
        accessModes: ["ReadWriteOnce"]
        resources:
          requests:
            storage: 1Gi

问题:
为什么 ConfigMap 可能没有按预期挂载在 /etc/mongod.conf 上?
我是否需要确保 /etc/mongod.conf 事先存在,或者 ConfigMap 应该自动处理这个问题?

如有任何指导或建议,我们将不胜感激!谢谢你。

mongodb kubernetes
1个回答
0
投票

这应该可以工作(mountPath 只是一个目录而不是文件本身):

volumeMounts:
- name: mongo-config-storage
  mountPath: /data/db
- name: mongo-config-file
  mountPath: /etc
© www.soinside.com 2019 - 2024. All rights reserved.