Kubernetes Changed Block Tracking API - Beta Differences (kubernetes.io)

<p>Changed Block Tracking (CBT) support for CSI drivers
<a href="https://kubernetes.io/blog/2025/09/25/csi-changed-block-tracking/">shipped as Alpha</a> in
September 2025. With the March 2026 <code>v1.0.0</code> release of the
<a href="https://github.com/kubernetes-csi/external-snapshot-metadata">external-snapshot-metadata</a>
project,
the feature moved to <strong>Beta</strong>.</p>
<p>If you aren't yet familiar with <em>changed block tracking</em> for storage in
Kubernetes, the
<a href="https://kubernetes.io/blog/2025/09/25/csi-changed-block-tracking/">Alpha announcement</a> covers
the motivation, the three primary components (the CSI <code>SnapshotMetadata</code>
gRPC service, the SnapshotMetadataService CRD, and the
<code>external-snapshot-metadata</code> sidecar), and a walkthrough of how to use the
API. CBT currently applies to block volumes; file-volume and network
file-share changed-list tracking is not covered by this feature. This post
focuses on what is different in Beta.</p>
<h2 id="what-s-new-in-beta">What's new in Beta<a class="td-heading-self-link" href="#what-s-new-in-beta" aria-label="Heading self-link"></a></h2><p>The main change in that release was the promotion of the
SnapshotMetadataService CRD from <code>v1alpha1</code> to <code>v1beta1</code>. The CRD used to
advertise a driver's metadata service now serves
<code>cbt.storage.k8s.io/v1beta1</code>. The schema itself is unchanged, but this
release <strong>removed</strong> <code>v1alpha1</code> (rather than serving it alongside the new version).
If you are upgrading from Alpha, you need to:</p>
<ul>
<li>Re-apply the CRD definition shipped with <code>v1.0.0</code>.</li>
<li>Update SnapshotMetadataService manifests to use
<code>apiVersion: cbt.storage.k8s.io/v1beta1</code>.</li>
<li>Update any client or controller code that talks to the CRD.</li>
</ul>
<p>This is a one-time change. There is no automatic conversion between the two
versions.</p>
<h2 id="compatibility">Compatibility<a class="td-heading-self-link" href="#compatibility" aria-label="Heading self-link"></a></h2><ul>
<li>Minimum Kubernetes version: <strong>1.33</strong></li>
<li>CSI spec: <strong>1.10 or newer</strong></li>
<li>Container image: <code>registry.k8s.io/sig-storage/csi-snapshot-metadata:v1.0.0</code></li>
</ul>
<h2 id="trying-it-out">Trying it out<a class="td-heading-self-link" href="#trying-it-out" aria-label="Heading self-link"></a></h2><p>The <a href="https://kubernetes.io/blog/2025/09/25/csi-changed-block-tracking/#getting-started">Getting Started section in the Alpha
blog</a> still
applies. In short:</p>
<ol>
<li>Make sure your CSI driver supports volume snapshots and ships the
<code>external-snapshot-metadata</code> sidecar.</li>
<li>Install the SnapshotMetadataService CRD (the <code>v1beta1</code> definition from
the <code>v1.0.0</code> release).</li>
<li>Create a SnapshotMetadataService resource for your driver.</li>
<li>Use a client — <code>snapshot-metadata-lister</code>, or your own implementation —
to call <code>GetMetadataAllocated</code> and <code>GetMetadataDelta</code>.</li>
</ol>
<p>If you want to see the full flow end-to-end, the
<a href="https://github.com/kubernetes-csi/csi-driver-host-path/blob/master/docs/example-ephemeral.md">hostpath driver example</a>
is a good starting point.</p>
<h2 id="what-s-next">What's next?<a class="td-heading-self-link" href="#what-s-next" aria-label="Heading self-link"></a></h2><p>The focus for the rest of the Beta cycle is wider CSI driver adoption and
operational feedback before the feature moves towards GA. If you maintain a
CSI driver, this is a good time to evaluate adding support. If you are
building a backup application on top of the API, feedback on the streaming
clients and the iterator package is very welcome.</p>
<h2 id="where-can-i-learn-more">Where can I learn more?<a class="td-heading-self-link" href="#where-can-i-learn-more" aria-label="Heading self-link"></a></h2><ul>
<li>The <a href="https://kubernetes-csi.github.io/docs/external-snapshot-metadata.html">CSI developer
documentation</a>
for snapshot metadata.</li>
<li><a href="https://www.kubernetes.dev/resources/keps/3314/">KEP-3314</a>.</li>
<li>The
<a
href="https://github.com/kubernetes-csi/external-snapshot-metadata">external-snapshot-metadata</a>
repository.</li>
<li>The
gRPC
<a href="https://github.com/kubernetes-csi/external-snapshot-metadata/blob/main/proto/schema.proto">schema</a>.</li>
<li>The
<a
href="https://github.com/kubernetes-csi/external-snapshot-metadata/tree/main/examples/snapshot-metadata-lister">snapshot-metadata-lister</a>
example
client.</li>
</ul>
<h2 id="how-do-i-get-involved">How do I get involved?<a class="td-heading-self-link" href="#how-do-i-get-involved" aria-label="Heading self-link"></a></h2><p>This work is the result of contributions from many people across SIG Storage.
A big thank you to everyone who helped review, code, and test the feature
through Alpha and into Beta:</p>
<ul>
<li>Ben Swartzlander (<a href="https://github.com/bswartz">bswartz</a>)</li>
<li>Carl
Braganza (<a href="https://github.com/carlbraganza">carlbraganza</a>)</li>
<li>Daniil
Fedotov (<a href="https://github.com/hairyhum">hairyhum</a>)</li>
<li>Ivan
Sim (<a href="https://github.com/ihcsim">ihcsim</a>)</li>
<li>Nikhil
Ladha (<a href="https://github.com/Nikhil-Ladha">Nikhil-Ladha</a>)</li>
<li>Praveen
M (<a href="https://github.com/iPraveenParihar">iPraveenParihar</a>)</li>
<li>Rakshith
R (<a href="https://github.com/Rakshith-R">Rakshith-R</a>)</li>
<li>Xing
Yang (<a href="https://github.com/xing-yang">xing-yang</a>)</li>
</ul>
<p>If
you would like to get involved with CSI or storage in Kubernetes,
<a href="https://github.com/kubernetes/community/tree/master/sig-storage">SIG Storage</a>
is the place to start. The <a href="https://docs.google.com/document/d/15tLCV3csvjHbKb16DVk-mfUmFry_Rlwo-2uG6KNGsfw/edit">Data Protection Working
Group</a>
also holds regular meetings, and new attendees are always welcome.</p>