无法将Mongo容器部署至测试集群:容器状态停滞在ContainerCreating
问题分析与修复
你的Mongo Pod卡在ContainerCreating状态,核心问题出在ConfigMap的挂载配置上,有两处明显错误:
- ConfigMap名称不匹配:你创建的ConfigMap叫
example-configmap,但Pod配置里引用的是mongo-configmap,Kubernetes找不到对应的ConfigMap,导致卷挂载失败,Pod无法完成创建。 - 挂载的Key不存在:Pod的
volumes.items里指定的key是mongo-configmap,但你定义的ConfigMap的data字段里只有database和database_uri这两个键,根本没有mongo-configmap这个key,这也会触发挂载失败。
修复方案
步骤1:修正Pod的ConfigMap引用名称
把Pod配置里volumes.configMap.name的值改成example-configmap,和你已创建的ConfigMap名称保持一致。
步骤2:调整挂载的Key配置
根据你的需求选择两种挂载方式之一:
方式一:挂载ConfigMap的所有键值对
如果想把ConfigMap里的所有配置都挂载到/example目录下,直接删掉items字段即可,Kubernetes会自动把每个key作为单独文件挂载:
apiVersion: v1 kind: Pod metadata: name: mongo spec: containers: - name: mongo image: mongo volumeMounts: - mountPath: /example name: config volumes: - name: config configMap: name: example-configmap
方式二:指定挂载特定Key到文件
如果只想挂载部分配置到指定文件,调整items里的key为ConfigMap实际存在的键,比如:
apiVersion: v1 kind: Pod metadata: name: mongo spec: containers: - name: mongo image: mongo volumeMounts: - mountPath: /example name: config volumes: - name: config configMap: name: example-configmap items: - key: database path: db.config - key: database_uri path: uri.config
验证操作
- 删除原有卡住的Pod:
kubectl delete pod mongo
- 应用修正后的Pod配置:
kubectl apply -f <你的Pod配置文件名>.yaml
- 查看Pod状态:
kubectl get pod mongo
如果还有问题,执行kubectl describe pod mongo查看事件详情,里面会明确提示挂载相关的错误信息。
内容的提问来源于stack exchange,提问作者Iannis
相关产品推荐
相关产品推荐

