k8s emptydir 使用

329 阅读1分钟

emptyDir 解释

我们知道,一个运行中的容器,默认情况下,对文件系统的写入,都是发生在其分层文件系统的可写层的,一旦容器运行结束,所有写入都会被丢弃。因此需要支持容器数据的持久化。

k8s中通过Volume来提供对容器存储的支持,Kubernetes提供了众多的volume类型,emptyDir是其中一种。

对于定义了 emptyDir 卷的 Pod,在 Pod 被指派到某节点时此卷会被创建。 就像其名称所表示的那样,emptyDir 卷最初是空的。尽管 Pod 中的容器挂载 emptyDir 卷的路径可能相同也可能不同,但这些容器都可以读写 emptyDir 卷中相同的文件。 当 Pod 因为某些原因被从节点上删除时,emptyDir 卷中的数据也会被永久删除。

emptyDir 配置示例

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: registry.k8s.io/test-webserver
    name: test-container
    volumeMounts:
    - mountPath: /cache       # 容器内挂载目录
      name: cache-volume      # 挂载得volumes名称
  volumes:                       
  - name: cache-volume        # volumes名称
    emptyDir:                 # volumes类型
      sizeLimit: 500Mi        # emptyDir 卷的存储容量

emptyDir 的使用场景

  • 缓存空间,例如基于磁盘的归并排序。
  • 为耗时较长的计算任务提供检查点,以便任务能方便地从崩溃前状态恢复执行。
  • 在 Web 服务器容器服务数据时,保存内容管理器容器获取的文件