通用临时卷

Kubernetes 中的通用临时卷是一项功能,允许您使用现有的 StorageClasses 和 CSI 驱动程序,为每个 Pod 动态创建临时(短暂)卷,而无需预先定义 PersistentVolumeClaims(PVC)。

它结合了动态供应的灵活性和 Pod 级别卷声明的简便性。

  • 它们是临时卷,会自动:

    • 在 Pod 启动时创建

    • 在 Pod 终止时删除

  • 使用与 PersistentVolumeClaim 相同的底层机制

  • 需要支持动态供应的 CSI(容器存储接口)驱动程序

临时卷示例

此示例会自动为 Pod 使用指定的 StorageClass 创建一个临时 PVC。

apiVersion: v1
kind: Pod
metadata:
  name: ephemeral-demo
spec:
  containers:
    - name: app
      image: busybox
      command: ["sh", "-c", "echo hello > /data/hello.txt && sleep 3600"]
      volumeMounts:
        - mountPath: /data
          name: ephemeral-volume
  volumes:
    - name: ephemeral-volume
      ephemeral:
        volumeClaimTemplate:
          metadata:
            labels:
              type: temporary
          spec:
            accessModes: [ "ReadWriteOnce" ]
            resources:
              requests:
                storage: 1Gi
            storageClassName: standard
  1. Pod 会使用此模板创建一个 PVC

主要特性

特性描述
临时性Pod 删除时,卷也会被删除
动态供应由支持动态供应的任何 CSI 驱动支持
无需单独 PVCVolumeClaim 直接嵌入在 Pod 规范中
CSI 驱动支持兼容任何支持的 CSI 驱动(如 EBS、RBD、Longhorn 等)

何时使用通用临时卷

  • 当您需要具备以下功能的临时存储时:

    • 可调整大小的卷

    • 快照

    • 加密

    • 非节点本地存储(例如云块存储)

  • 适用于:

    • 缓存中间数据

    • 临时工作目录

    • 流水线、AI/ML 工作流

与 emptyDir 的区别

特性emptyDir通用临时卷
底层存储节点本地磁盘或内存任何支持 CSI 的后端
存储功能基础功能支持快照、加密等高级功能
使用场景简单的临时存储需要高级临时存储的场景
可重新调度否(绑定节点)是(如果 CSI 卷可附加)