更新时间:2024-01-04 GMT+08:00

临时存储卷概述

临时卷介绍

当有些应用程序需要额外的存储,但并不关心数据在重启后是否仍然可用。 例如,缓存服务经常受限于内存大小,而且可以将不常用的数据转移到比内存慢的存储中,对总体性能的影响并不大。另有些应用程序需要以文件形式注入的只读数据,比如配置数据或密钥。

Kubernetes中的临时卷(Ephemeral Volume),就是为此类场景设计的。临时卷会遵从Pod的生命周期,与 Pod一起创建和删除。

Kubernetes中常用的临时卷:
  • EmptyDir:Pod启动时为空,存储空间来自本地的kubelet根目录(通常是根磁盘)或内存。EmptyDir是从节点临时存储中分配的,如果来自其他来源(如日志文件或镜像分层数据)的数据占满了临时存储,可能会发生存储容量不足的问题。
  • ConfigMap:将ConfigMap类型的Kubernetes数据以数据卷的形式挂载到Pod中。
  • Secret:将Secret类型的Kubernetes数据以数据卷的形式挂载到Pod中。

EmptyDir的类型

CCE提供了如下两种EmptyDir类型:
  • 临时路径:Kubernetes原生的EmptyDir类型,生命周期与容器实例相同,并支持指定内存作为存储介质。容器实例消亡时,EmptyDir会被删除,数据会永久丢失。
  • 本地临时卷:本地临时存储卷将节点的本地数据盘通过LVM组成存储池(VolumeGroup),然后划分LV作为EmptyDir的存储介质给容器挂载使用,相比原生EmptyDir默认的存储介质类型性能更好。

约束与限制

  • 本地临时卷仅在集群版本 >= v1.21.2-r0 时支持,且需要everest插件版本>=1.2.29。
  • 请勿在节点上手动删除对应的存储池或卸载数据盘,否则会导致数据丢失等异常情况。
  • 请确保节点上Pod不要挂载/var/lib/kubelet/pods/目录,否则可能会导致使用了临时存储卷的Pod无法正常删除。