K8S 之 存储卷 emptyDir
摘要
-
本文介绍 K8S 的 存储卷 emptyDir ,本文以 CentOS 8 为例。
存储卷 emptyDir 介绍
-
emptyDir 是 Kubernetes 中最简单的一种 Pod 级别的临时存储卷。它的核心特点是:Pod 生命周期内共享临时存储,Pod 删除后数据自动丢弃。
-
同一个 Pod 内的多个容器可以通过 emptyDir 共享数据。跨 Pod 不共享,适用于临时数据。
-
emptyDir 只能挂载目录。
示例
-
两个容器 app 和 sidecar 通过 /data 共享一个 emptyDir 卷。
1 | # shared-emptydir-pod.yaml |
-
创建
1 | k apply -f shared-emptydir-pod.yaml |
-
emptyDir 存储卷 默认使用节点本地磁盘,路径为
/var/lib/kubelet/pods/<pod-uid>/volumes/kubernetes.io~empty-dir/<volume-name>
1 | # 登录 k8s-worker2 节点 |
-
进入容器查看存储卷内容
1 | $ kubectl exec -it shared-emptydir-pod -c app -- cat /data1/hello |
-
删除POD后emptydir存储卷会立刻删除
1 | kubectl delete pod shared-emptydir-pod |
将 emptydir 存储卷改用 内存 存储
1 | emptyDir: |
-
这里要注意,即使这里使用内存存储,但是
/var/lib/kubelet/pods/<pod-uid>/volumes/kubernetes.io~empty-dir/<volume-name>
依然存在,但它挂载的是 tmpfs 文件系统
1 | # 登录pod所在节点查看挂载点 |
卷类型 | 来源 | 挂载路径 | 作用 |
---|---|---|---|
emptyDir | 你配置的 | /data1 , /data2 |
Pod 内部容器共享临时内存存储 |
projected | 系统自动 | /var/run/secrets/kubernetes.io/serviceaccount/ |
挂载 serviceaccount token,CA 证书 |
-
查看容器内挂载点
1 | $ kubectl exec shared-emptydir-pod -c app -- mount | grep /data1 |