通用临时卷

Kubernetes 中的通用临时卷是一项功能,允许您使用现有的存储类和 CSI 驱动程序为每个 Pod 提供临时(短暂)卷,而无需预先定义持久卷声明(PVC)。

它们结合了动态供给的灵活性和 Pod 级卷声明的简单性。

  • 它们是临时卷,自动:

    • 在 Pod 启动时创建

    • 在 Pod 终止时删除

  • 使用与持久卷声明相同的底层机制

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

示例临时卷

这将使用指定的 StorageClass 自动为 Pod 创建一个临时 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 驱动程序提供支持
无需单独的 PVC卷声明直接嵌入在 Pod 规格中
基于 CSI与任何兼容的 CSI 驱动程序(EBS、RBD、Longhorn 等)一起工作

何时使用通用临时卷

  • 当您需要具有以下特性的临时存储时:

    • 可调整大小的卷

    • 快照

    • 加密

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

  • 理想的用途:

    • 缓存中间数据

    • 临时工作目录

    • 流水线、AI/ML 工作流

它们与 emptyDir 的区别

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