元鉴
返回中文阅读流

Kubernetes Blog

Kubernetes v1.36:将卷组快照推进至 GA

Kubernetes v1.36 中,卷组快照支持达到 GA,可通过扩展 API 为一组卷创建崩溃一致性快照。

中文内容

已翻译official company source英文原文2026-05-08

Kubernetes v1.36:将卷组快照推进至 GA

By Xing Yang (VMware by Broadcom) | Friday, May 08, 2026

卷组快照在 Kubernetes v1.27 发布时作为 Alpha 功能引入,在 v1.32 进入 Beta,并在 v1.34 进入第二个 Beta。我们很高兴地宣布,在 Kubernetes v1.36 版本中,对卷组快照的支持已达到正式可用(GA)。

对卷组快照的支持依赖一组用于组快照的扩展 API。这些 API 允许用户为一组卷创建崩溃一致性快照。在幕后,Kubernetes 使用标签选择器将多个 PersistentVolumeClaim 对象分组以进行快照。一个关键目标是让你能够将这组快照恢复到新卷,并基于一个崩溃一致的恢复点恢复工作负载。

此功能仅支持 CSI 卷驱动程序。

卷组快照概览

一些存储系统提供为多个卷创建崩溃一致性快照的能力。组快照表示在同一时间点从多个卷制作的副本。组快照既可用于重新填充新卷(预先填充快照数据),也可用于将现有卷恢复到先前状态(由这些快照表示)。

为什么要向 Kubernetes 添加卷组快照?

Kubernetes 卷插件系统已经提供了一种强大的抽象,可自动完成块存储和文件存储的供应、挂载到节点、挂载到文件系统、扩容和快照。支撑所有这些功能的是 Kubernetes 关于工作负载可移植性的目标。

此前已经有 VolumeSnapshot API,可用于对持久卷创建快照,以防止数据丢失或数据损坏。然而,一些存储系统支持一致性组快照,允许在同一时间点从多个卷创建快照,以实现写入顺序一致性。这对于包含多个卷的应用程序非常有用。例如,一个应用程序可能将数据存储在一个卷中,将日志存储在另一个卷中。如果这些卷的快照是在不同时间创建的,则应用程序将不一致,并且如果从这些快照恢复,将无法正常运行。

虽然你可以先静默应用程序,再依次创建单个快照,但这个过程可能很耗时,有时甚至无法实现。一致性组支持可在无需应用程序静默的情况下,为组内所有卷提供崩溃一致性。

用于卷组快照的 Kubernetes API

Kubernetes 对卷组快照的支持依赖三种用于管理快照的 API 类型:

VolumeGroupSnapshotCreated by a Kubernetes user (or automation) to request creation of a volume group snapshot for multiple persistent volume claims.VolumeGroupSnapshotContentCreated by the snapshot controller for a dynamically created VolumeGroupSnapshot. It contains information about the provisioned cluster resource (a group snapshot). The object binds to the VolumeGroupSnapshot for which it was created with a one-to-one mapping.VolumeGroupSnapshotClassCreated by cluster administrators to describe how volume group snapshots should be created, including the driver information, the deletion policy, etc.

这三种 API 类型被定义为 CustomResourceDefinitions(CRD)。在 GA 版本中,API 版本已提升为 v1。

GA 中有什么新变化?

  • VolumeGroupSnapshot、VolumeGroupSnapshotContent 和 VolumeGroupSnapshotClass 的 API 版本提升为 groupsnapshot.storage.k8s.io/v1。
  • 基于 Beta 版本反馈增强稳定性并修复错误,包括在 v1beta2 中引入的用于准确报告 restoreSize 的改进。

如何使用 Kubernetes 卷组快照

使用 Kubernetes 创建新的组快照

定义 VolumeGroupSnapshotClass 对象后,如果你有希望一起创建快照的卷,可以通过创建 VolumeGroupSnapshot 对象来请求新的组快照。

为你希望分组的 PVC 添加标签:

% kubectl label pvc pvc-0 group=myGroup
persistentvolumeclaim/pvc-0 labeled

% kubectl label pvc pvc-1 group=myGroup
persistentvolumeclaim/pvc-1 labeled

对于动态供应,必须设置选择器,以便快照控制器能够找到带有匹配标签的 PVC,并将其一起创建快照。

apiVersion: groupsnapshot.storage.k8s.io/v1
kind: VolumeGroupSnapshot
metadata:
  name: snapshot-daily-20260422
  namespace: demo-namespace
spec:
  volumeGroupSnapshotClassName: csi-groupSnapclass
  source:
    selector:
      matchLabels:
        group: myGroup

动态供应需要 VolumeGroupSnapshotClass:

apiVersion: groupsnapshot.storage.k8s.io/v1
kind: VolumeGroupSnapshotClass
metadata:
  name: csi-groupSnapclass
driver: example.csi.k8s.io
deletionPolicy: Delete

如何使用组快照进行恢复

恢复时,请求从属于某个 VolumeGroupSnapshot 的 VolumeSnapshot 对象创建新的 PersistentVolumeClaim。对组快照中的所有卷重复此操作。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: examplepvc-restored-2026-04-22
  namespace: demo-namespace
spec:
  storageClassName: example-sc
  dataSource:
    name: snapshot-0962a745b2bf930bb385b7b50c9b08af471f1a16780726de19429dd9c94eaca0
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io
  accessModes:
    - ReadWriteOncePod
  resources:
    requests:
      storage: 100Mi

作为存储供应商,如何添加对组快照的支持?

要实现卷组快照功能,CSI 驱动程序必须:

  • 实现新的组控制器服务。
  • 实现组控制器 RPC:CreateVolumeGroupSnapshot、DeleteVolumeGroupSnapshot 和 GetVolumeGroupSnapshot。
  • 添加组控制器能力 CREATE_DELETE_GET_VOLUME_GROUP_SNAPSHOT。

更多详情请参见 CSI 规范和 Kubernetes-CSI Driver Developer Guide。

如何了解更多?

  • 卷组快照功能的设计规范。
  • 卷组快照 API 和控制器的代码仓库。
  • 关于组快照功能的 CSI 文档。

如何参与?

这个项目和整个 Kubernetes 一样,是许多来自不同背景的贡献者共同努力的成果。我谨代表 SIG Storage,向多年来挺身而出帮助项目达到 GA 的所有贡献者表示衷心感谢:

  • 正文:Ben Swartzlander(bswartz)
  • 正文:Cici Huang(cici37)
  • 正文:Darshan Murthy(darshansreenivas)
  • 正文:Hemant Kumar(gnufied)
  • 正文:James Defelice(jdef)
  • 正文:Jan Šafránek(jsafrane)
  • 正文:Madhu Rajanna(Madhu-1)
  • 正文:Manish M Yathnalli(manishym)
  • 正文:Michelle Au(msau42)
  • 正文:Niels de Vos(nixpanic)
  • 正文:Leonardo Cecchi(leonardoce)
  • 正文:Rakshith R(Rakshith-R)
  • 正文:Raunak Shah(RaunakShah)
  • 正文:Saad Ali(saad-ali)
  • 正文:Wei Duan(duanwei33)
  • 正文:Xing Yang(xing-yang)
  • 正文:Yati Padia(yati1998)

对于有兴趣参与 CSI 或 Kubernetes Storage 系统任何部分的设计与开发的人,欢迎加入 Kubernetes Storage Special Interest Group(SIG)。我们始终欢迎新的贡献者。

我们还会定期举行 Data Protection Working Group 会议。欢迎新成员参加我们的讨论。

  • ← 上一篇
  • 下一篇 →

原文标题

Kubernetes v1.36: Moving Volume Group Snapshots to GA