2025,每天10分钟,跟我学K8S(三十)- 对象属性 - Volume - emptyDir

        emptyDir  顾名思义,是一个临时的存储卷,他是在k8s在pod调度到节点的时候自动创建的,生命周期随着pod的删除或转移而销毁,里面的数据也随之删除。一般用于非持久化的pod。同一个pod如果启动了多个容器,那它们之前是可以互相访问这个卷,如果不同的pod则彼此隔离。即便这2个pod是在同一个node节点上,默认存储在pod所在的node节点的/var/lib/kubelet/pods/<pod-id>/volumes/kubernetes.io~empty-dir/<volume-name> 目录。

一、典型使用场景

1. 容器间数据共享

  • 场景:多个容器协作处理数据(如生产者-消费者模型)。
  • 示例
    • 日志收集:Sidecar 容器从主容器读取日志并上传到云端。
    • 数据处理流水线:容器 A 生成中间数据,容器 B 处理并输出结果。

2. 临时缓存

  • 场景:应用需要临时存储缓存文件(如编译中间文件、下载的依赖包)。
  • 优势:避免占用容器镜像层空间,提升容器启动速度。

3. 内存级高性能存储

  • 场景:需要低延迟读写的临时数据(如临时会话数据、实时计算中间结果)。
  • 配置:通过 medium: Memory 将卷挂载为内存文件系统(tmpfs)。

二、配置示例

yaml演示

apiVersion: v1
kind: Pod
metadata:
  name: emptydir-demo
spec:
  containers:
    - name: writer
      image: m.daocloud.io/docker.io/nginx
      command: ["sh", "-c", "echo 'Data' > /data/file.txt && sleep 3600"]
      volumeMounts:
        - name: shared-data
          mountPath: /data

    - name: reader
      image: m.daocloud.io/docker.io/nginx
      command: ["sh", "-c", "cat /data/file.txt && sleep 3600"]
      volumeMounts:
        - name: shared-data
          mountPath: /data

  volumes:
    - name: shared-data
      emptyDir: {}  # 默认使用节点磁盘

上面的例子是一个pod创建了2个容器,一个为writer,一个为reader,他们共享了一个名为shared-data的卷名,并且都挂载在各自的/data目录。 

最下面创建了一个名为shared-data的卷,名为shared-data的卷,类型为emptydir

从上面的配置可以看出来,2个pod共享了同一个卷,如果reader读取成功说明这个共享卷被2个容器共享。

结果验证,发现reader的容器是可以读取到这里面的内容。

本地验证,通过命令可以得知这个pod的id为 《770f49aa-4426-421a-9516-7ff0f7f81141》

# 获取方式  kubectl get pod <pod-id> -o jsonpath='{.metadata.uid}'

# kubectl get pod emptydir-demo  -o jsonpath='{.metadata.uid}'
770f49aa-4426-421a-9516-7ff0f7f81141

进入/var/lib/kubelet/pods/<pod-id>/volumes/kubernetes.io~empty-dir/<volume-name> 目录查看是否存在files.txt以及内容

并且可以通过/var/lib/kubelet/pods/<pod-id>/containers/ 查看到下面有writer和reader2个容器,和上面yaml文件中保持一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值