emptyDir 存储卷
基本概念与特性
emptyDir 是一种临时存储卷,其生命周期与 Pod 紧密绑定:
- 创建时机:当 Pod 被调度到节点上时,Kubernetes 会自动在节点上创建一个空目录作为 emptyDir 卷
- 生命周期:emptyDir 会随 Pod 的删除而被永久清除,但容器崩溃不会导致数据删除
- 共享性:Pod 内的所有容器都可以读写同一个 emptyDir 卷,适合容器间数据共享
- 性能:数据存储在节点本地,具有较高的 I/O 性能
使用场景
emptyDir 适用于以下临时存储需求:
- 容器间共享数据:如一个容器生成日志,另一个容器处理日志
- 临时工作空间:应用程序运行时所需的临时目录,无需永久保留
- 缓存层:作为应用程序的缓存存储,加速数据处理
- 临时文件交换:多个容器间需要临时交换文件,如配置文件传递
配置示例
yaml
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- image: busybox
name: test-emptydir
command: ["sleep", "3600"]
volumeMounts:
- mountPath: /data
name: data-volume
volumes:
- name: data-volume
emptyDir: {}配置选项
emptyDir 支持以下可选参数:
- 存储介质选择:yaml
volumes: - name: cache-volume emptyDir: medium: Memory # 使用内存而非磁盘 - 大小限制(仅当 medium=Memory 时有效):yaml
volumes: - name: cache-volume emptyDir: medium: Memory sizeLimit: 1Gi
注意事项
- 数据非持久化:明确 emptyDir 数据不持久,勿用于需要长期保存的数据存储
- 节点故障风险:若 Pod 因节点故障迁移,原节点上的 emptyDir 数据无法跟随迁移
- 资源消耗:需关注其对节点磁盘空间的占用,避免大量临时数据导致节点磁盘满溢
- tmpfs 限制:当使用 tmpfs 作为后端时,节点重启会导致数据丢失,且文件计入容器内存限制
