首页/云/Kubernetes 速查/projected 卷合并多来源
配置与存储54 条

projected 卷合并多来源

把 ConfigMap、Secret、Downward API、ServiceAccount Token 合并到同一个挂载目录,减少容器里的卷数量;同名文件按 sources 顺序后者覆盖前者。

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

projected 卷做什么

它把配置映射、密钥、向下接口与临时服务账号令牌合并挂载到同一个目录里。相比每种来源各挂一个卷,合并后容器内的路径更少、清单更短,应用只需读取一个目录。各来源按声明顺序处理,同名文件会被后面的来源覆盖。

基本信息

适用平台Kubernetes 1.20+
支持来源配置映射、密钥、向下接口、服务账号令牌
权限控制defaultMode 统一设置目录权限
覆盖规则同名文件按来源声明顺序,后者覆盖前者
典型用途把配置与令牌放到同一目录供应用统一读取

典型使用场景

  • 应用约定从同一目录读取全部配置,避免挂载多个卷
  • 需要把 Pod 自身的名称、命名空间与配置一起放入目录
  • 为外部系统签发短期令牌,需要独立控制有效期与受众
  • 精简清单:把多个数据来源合并成一次卷声明
  • 调整落盘文件名,使其符合应用期望的命名规范

projected 示例

projected 示例
volumes:
  - name: all-in-one
    projected:
      defaultMode: 0440          # 统一权限
      sources:
        - secret:
            name: app-secret
        - configMap:
            name: app-config
        - downwardAPI:
            items:
              - path: pod-name
                fieldRef:
                  fieldPath: metadata.name
        - serviceAccountToken:
            path: token
            expirationSeconds: 3600   # 令牌有效期
            audience: vault

验证挂载结果

验证挂载结果
kubectl exec -it web-x -- ls -l /var/run/projected       # 目录内容与权限
kubectl exec -it web-x -- cat /var/run/projected/pod-name  # 向下接口是否写入
kubectl describe pod web-x | grep -A5 projected           # 卷来源与配置

来源与用途

来源内容说明
configMap普通配置项可选择指定键并指定落盘路径
secret敏感数据默认权限更严格,注意应用能否读取
downwardAPIPod 与容器元信息用于标识实例身份
serviceAccountToken短期服务账号令牌可设置有效期与受众
每个来源都能用条目与路径字段精确控制落盘文件名,目录权限由统一字段决定。权限要求差异较大的数据,拆成两个卷反而更清晰。
合并到同一目录后,多个来源中的同名文件会互相覆盖,而且不会有额外提示。出现内容与预期不符时,要按声明顺序逐个核对来源。

易错点

  • 多个来源存在同名文件:后声明的覆盖先声明的,应用读到内容与预期不符却没有报错
  • 统一权限挂载全部数据:要么敏感数据权限过宽,要么权限过严导致应用读不到
  • 向下接口条目路径写错:文件不生成或内容为空,容器启动阶段才暴露问题
  • 把长期令牌当短期令牌使用:有效期设置不当会让应用定期失去访问能力

数据来源与参考

  • Kubernetes 官方文档 · Projected Volumes
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌