本地存储卷之emptyDir ¶
临时存储:EmptyDir 适用场景 ¶
- 实现 pod 内容器之间数据共享(如Sidecar日志收集)
- 大数据处理中间缓存
- CI/CD 流水线临时工作区
- 随着 pod 被删除,该卷也会被删除
实践 ¶
1. 创建资源清单 volume-emptydir.yml, 选择调度在 k8sworker001 节点
apiVersion: v1
kind: Pod
metadata:
name: volume-emptydir
spec:
nodeName: k8sworker001
containers:
- name: write
image: centos
imagePullPolicy: IfNotPresent
command: ["bash","-c","echo haha > /data/1.txt && echo '我已经将 haha 写入到 /data/1.txt';sleep 6000"]
volumeMounts:
- name: data
mountPath: /data
- name: read
image: centos
imagePullPolicy: IfNotPresent
command: ["bash","-c","cat /data/1.txt; sleep 6000"]
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
emptyDir: {}
sizeLimit: 500Mi # 关键配置:防止磁盘爆满
2. 基于 yaml 文件创建 pod, 选择调度在 k8sworker001 节点
[root@k8smaster001 emptydir]# kubectl apply -f volume-emptydir.yml
pod/volume-emptydir created
3. 查看 pod 启动情况
[root@k8smaster001 emptydir]# kubectl get pods |grep volume-emptydir
volume-emptydir 2/2 Running 0 2m14s
4. 查看 pod 描述信息
[root@k8smaster001 emptydir]# kubectl describe pod volume-emptydir | tail -10
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Pulling 2m36s kubelet Pulling image "centos"
Normal Pulled 48s kubelet Successfully pulled image "centos" in 1m47.819s (1m47.819s including waiting)
Normal Created 48s kubelet Created container write
Normal Started 47s kubelet Started container write
Normal Pulled 47s kubelet Container image "centos" already present on machine
Normal Created 47s kubelet Created container read
Normal Started 47s kubelet Started container read
5. 验证
[root@k8smaster001 emptydir]# kubectl logs volume-emptydir -c write
我已经将 haha 写入到 /data/1.txt
[root@k8smaster001 emptydir]# kubectl logs volume-emptydir -c read
haha
生产经验 ¶
- ✅ 设置 sizeLimit 避免失控增长
- ✅ 内存介质提升性能:emptyDir: { medium: "Memory" }
- ⚠️ Pod删除数据即丢失,不能用于关键数据