首页/云/云与容器速查/Pod 卷:emptyDir 与 hostPath
Kubernetes68 条

Pod 卷:emptyDir 与 hostPath

Pod 级卷在容器间共享:emptyDir 随 Pod 生命周期(重启保留、删除即清),hostPath 挂宿主路径(裸/特权场景)。生产数据请走 PVC,临时交换用 emptyDir。

云与容器速查云更新于 2026-10-13

Pod 卷是什么

卷定义在 Pod 层,被该 Pod 的容器共同挂载:空目录卷 emptyDir 的生命周期跟着 Pod 走,容器重启数据还在,Pod 被删除或被驱逐即清空;宿主目录卷 hostPath 直接读写节点上的路径,与节点强耦合。生产环境的持久数据应交给 PVC,emptyDir 只用于临时缓存与容器间交换文件,搞清楚边界能避免一大批“数据怎么没了”的事故。

基本信息

emptyDirPod 沙箱内的目录:容器重启数据在,Pod 删除即丢
medium: Memory内存盘:读写快、计入内存用量、Pod 结束即清
sizeLimit限制 emptyDir 用量,超过会被驱逐,默认无限制
hostPath挂宿主路径,可选 DirectoryOrCreate 等类型,与节点绑定
多容器共享同 Pod 里挂同一个卷名即可交换文件,如日志与代码目录
选型持久数据用 PVC,临时交换用 emptyDir,宿主相关用 hostPath

典型使用场景

  • 边车模式共享文件:日志采集容器读主容器写出的日志目录
  • 镜像构建或解压的临时工作目录,不污染可写层
  • 给数据库类容器提供 /dev/shm 或低延迟临时空间
  • 读取节点上的日志或套接字文件(hostPath,需明确风险)
  • 确认 Pod 漂移后数据是否跟着走:判断该不该换成 PVC

emptyDir 示例

emptyDir 示例
volumes:
  - name: cache
    emptyDir:
      sizeLimit: 512Mi   # 超过上限容器会被驱逐
  - name: shm
    emptyDir:
      medium: Memory   # 内存盘,适合 /dev/shm
      sizeLimit: 64Mi
containers:
  - name: app
    image: registry.example.com/team/app:1.2.3
    volumeMounts:
      - { name: cache, mountPath: /var/cache/app }
      - { name: shm, mountPath: /dev/shm }

卷类型对照

类型生命周期适用风险
emptyDir随 Pod,容器重启保留临时缓存、容器间交换写满节点磁盘会触发驱逐
emptyDir+Memory随 Pod,占内存/dev/shm、低延迟临时数据计入内存,过大引发 OOM
hostPath与节点绑定读宿主日志、套接字、设备节点耦合,权限与安全风险高
PVC独立于 Pod数据库、需持久化的数据需核对存储类与绑定状态
emptyDir 默认落在节点磁盘:写满会触发节点磁盘压力并驱逐 Pod,显式设 sizeLimit 更安全。
hostPath 挂 /var/run/docker.sock、宿主根目录之类路径,等于把节点控制权交给容器,生产环境不要这样配置。

易错点

  • 把 emptyDir 当持久存储:Pod 重建、换节点或被驱逐后数据全丢,误判为存储故障
  • 容器往 emptyDir 里狂写日志又不限大小:节点磁盘被写满,同节点其他 Pod 一起受牵连
  • 用 hostPath 保存业务数据:Pod 漂移后读到的是另一台节点的目录,内容完全不同
  • 多容器共享卷时挂载路径写错:一个容器写、另一个读不到,排查方向容易跑偏

数据来源与参考

  • Kubernetes Docs:Volumes

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌