EmptyDir 是 Kubernetes 中生命周期与 Pod 绑定的临时本地存储卷,支持同一 Pod 内多容器共享,适用于缓存、日志暂存等场景,但不持久、不跨节点;可通过 medium: "Memory" 或 sizeLimit 优化使用。

EmptyDir 是 Kubernetes 中最简单的卷类型,用于在 Pod 生命周期内为同一 Pod 内的多个容器提供临时、本地共享存储。它不持久化数据,生命周期与 Pod 绑定——Pod 删除,EmptyDir 数据即丢失。
EmptyDir 的核心特点
它在 Pod 被调度到节点时自动创建,底层通常是节点的磁盘(内存可选),仅限本 Pod 内容器挂载访问,不跨节点、不跨 Pod。适合缓存、中间文件、日志暂存等场景。
定义 EmptyDir 卷并挂载给多个容器
在 Pod 清单中声明一个 emptyDir: {} 卷,然后在每个需要共享的容器中通过 volumeMounts 挂载到各自容器内的路径。路径可以不同,但底层是同一块存储空间。
示例关键片段:
volumes:
- name: shared-cache
emptyDir: {}
containers:
- name: app
image: nginx
volumeMounts:
- name: shared-cache
mountPath: /var/cache/app
- name: sidecar-logger
image: busybox
volumeMounts:
- name: shared-cache
mountPath: /cache
这样,nginx 容器写入 /var/cache/app/xxx.log,sidecar 可立即在 /cache/xxx.log 读取——无需网络或额外服务。
控制 EmptyDir 存储位置和大小(可选)
默认使用节点根磁盘,但可通过以下方式优化:
- memory 类型:设 emptyDir: { medium: "Memory" },用 tmpfs,速度快、易挥发,适合高频小文件(如编译中间产物);注意会占用容器内存配额
- sizeLimit:限制最大容量(如 sizeLimit: 512Mi),防止占满节点磁盘;K8s 1.20+ 支持,超出时可能触发容器驱逐
典型适用与慎用场景
✅ 推荐用法:
- 主应用与日志收集 sidecar 共享日志目录
- Web 服务与静态资源生成器(如 SSG)协同写入 HTML 输出目录
- 构建类 Job 中,多个步骤容器复用中间构建产物
❌ 避免用于:
- 需要跨 Pod 或重启后保留的数据(应改用 PersistentVolume)
- 高可靠性要求的缓存(EmptyDir 故障即丢失,无副本)
- 大文件长期驻留(易耗尽节点本地磁盘)

















