首页/云/Kubernetes 速查/ConfigMap 以卷方式挂载
配置与存储54 条

ConfigMap 以卷方式挂载

把 ConfigMap 的键做成文件挂到容器目录,支持 items 挑选与重命名键、指定路径;适合配置文件类数据。

Kubernetes 速查云更新于 2026-10-13

对象定位

把 ConfigMap 以卷的形式挂进容器,每个键落成一个文件,适合放配置文件、脚本片段、证书之外的文本类配置。适用平台是 Kubernetes。与 env 注入相比,卷挂载有两个关键差别:内容会随 ConfigMap 更新自动同步(分钟级),以及挂载会遮蔽目标目录里镜像原有的内容。用 items 可以挑选键并重命名文件,用 subPath 可以只挂单个文件。

基本信息

适用平台Kubernetes,Pod 的 volumes.configMap
文件权限默认 0644,可用 defaultMode 或 items 的 mode 调整
更新行为普通挂载会分钟级同步;subPath 挂载不会更新
覆盖行为mountPath 指向目录时会遮蔽该目录原有内容

典型使用场景

  • 应用配置文件:把 nginx.conf、application.yml 之类的文本配置挂到预期路径
  • 挑选并改名:只挂需要的键,把 LOG_LEVEL 落成 log-level.txt 供脚本读取
  • 多容器共享配置:同一 ConfigMap 挂到多个容器,保证配置一致
  • 灰度改配置:更新 ConfigMap 后观察应用重读行为,配合热加载生效
  • 区分环境:不同命名空间挂各自的 ConfigMap,同一份清单跑多套环境

卷挂载示例

卷挂载示例
spec:
  containers:
    - name: app
      image: registry.example.com/app:1.26.0
      volumeMounts:
        - name: config
          mountPath: /etc/app/conf.d
          readOnly: true
  volumes:
    - name: config
      configMap:
        name: app-config
        items:
          - key: app.properties
            path: app.properties
          - key: LOG_LEVEL
            path: log-level.txt

验证

验证
kubectl exec -it web-x -- ls -l /etc/app/conf.d        # 挂载出的文件与权限
kubectl exec -it web-x -- cat /etc/app/conf.d/log-level.txt
kubectl get cm app-config -o jsonpath='{.data}'          # 与容器内内容比对
kubectl exec -it web-x -- find /etc/app/conf.d -type l   # 挂载点内的符号链接(Kubernetes 用软链切换版本)

挂载方式对比

方式更新是否传播适用注意
整目录挂载分钟级传播配置目录、多文件场景遮蔽目标目录原有内容
items 挑选键分钟级传播只要部分键、需要改名未列出的键不会出现
subPath 单文件不传播挂单个文件到特定路径改配置需重建 Pod
defaultMode 调权限随挂载生效限制配置可读范围数值用八进制写法
卷里的文件会随 ConfigMap 更新自动同步(分钟级),这是与 env 注入的关键区别;但应用自身要能重读文件,否则同步了也不会生效。
Kubernetes 通过符号链接切换挂载内容,容器内直接 cat 跟随链接读到的是最新版本,而进程若一直持有文件句柄则仍看到旧内容。

易错点

  • mountPath 是目录时该目录原有内容会被遮蔽,挂到既有配置目录前先确认镜像里有什么,否则会出现「配置文件凭空消失」
  • 用 subPath 挂单文件不会自动更新,改配置需重建 Pod,这是「改了 ConfigMap 没生效」的高频根因
  • ConfigMap 是命名空间级对象,Pod 引用不到跨命名空间的同名配置,多环境部署要成套创建
  • items 里键名写错时文件不会出现且不报错,挂载成功但目录少文件,排查时要对比 ConfigMap 的 data 键

数据来源与参考

  • Kubernetes 官方文档 · ConfigMap(Volume 挂载)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌