Skip to content

etcd 3.7.0-beta: RangeStream and What Developers Need to Know

Karify98 & Amy ๐ŸŒธยท
Cover Image for etcd 3.7.0-beta: RangeStream and What Developers Need to Know

Why etcd Matters to Developers

If Kubernetes is the brain of your system, etcd is its memory. Everything Kubernetes knows โ€” which pods are running, which services expose which ports, what your ConfigMaps contain โ€” lives in etcd. When etcd slows down, your entire cluster slows down with it.

On May 20, 2026, SIG-etcd officially announced the first beta of etcd 3.7.0. This is the biggest upgrade since 3.6.0 (released November 2025). The two most notable changes: RangeStream and the complete removal of v2store.

RangeStream: Stop Buffering Entire Result Sets

The Old Problem

In etcd 3.6 and earlier, when you query a range of keys (e.g., fetch all pods in a namespace), etcd reads the entire result set into memory and returns it all at once. On large clusters, this causes:

  • Unpredictable latency: the client waits until every key is read
  • Memory spikes: both the server and client must buffer the full result set
  • Timeout risks: requests can time out before results are fully returned
# Old way: fetch all keys โ€” can take seconds on large clusters
etcdctl get /registry/pods --prefix
# Client blocks until EVERY key has been read

How RangeStream Fixes This

RangeStream is a new RPC that lets etcd stream results in chunks. The client receives data incrementally instead of waiting for everything:

# etcd 3.7: stream results chunk by chunk
etcdctl get /registry/pods --prefix --stream
# Results arrive gradually โ€” the client can process the first chunk immediately

This pattern is familiar to developers who've worked with gRPC server-side streaming. Each chunk is a small set of keys, which delivers:

  • Predictable latency: the first chunk arrives in milliseconds
  • Stable memory usage: only the current chunk needs to be buffered
  • No timeouts: data flows continuously, avoiding bottlenecks

This matters especially for the Kubernetes API server โ€” when you run kubectl get pods --all-namespaces on a cluster with thousands of pods, the API server queries etcd for the list. RangeStream makes this query significantly faster and more stable.

Who Built RangeStream?

Jeffrey Ying, a software engineer at Google and a relatively new etcd contributor, led the RangeStream implementation. He said: "I've always been fascinated by database internals, and building RangeStream was a great opportunity to solve a bottleneck we were hitting in production with Kubernetes."

This speaks volumes: etcd is an open-source project where new contributors can still make a massive impact.

Goodbye v2store โ€” 100% V3

Here's the milestone: etcd 3.7 is the first release that is 100% v3store, with zero traces of v2store remaining. What's been removed:

  • v2 discovery
  • v2 bootstrap
  • v2 request handling
  • v2 client entirely

If you're still running etcd v3.4 or earlier (EOL since May 15, 2026), now is the time to upgrade. v3.4 will receive no more security patches after the end of May 2026.

# Check your etcd cluster version
kubectl get pods -n kube-system -l component=etcd -o jsonpath='{.items[0].spec.containers[0].image}'
# Example output: registry.k8s.io/etcd:3.5.16-0

Other Notable Changes

bbolt 1.5.0

bbolt is the embedded key-value database that etcd uses for on-disk storage. bbolt 1.5.0 brings performance improvements and bug fixes โ€” directly affecting etcd's read/write speed.

raft 3.7.0

The Raft algorithm maintains consistency across etcd nodes in a cluster. raft 3.7.0 improves election timeouts and leader stability โ€” reducing unnecessary leadership changes during minor network partitions.

Removal of Legacy Experimental Flags

Many deprecated experimental flags have been removed, including ones dating back to etcd v3.3/v3.4. If your upgrade scripts still use --experimental-*, audit them carefully before upgrading.

What Developers Should Do

  • Test the beta now: Run etcd 3.7.0-beta.0 in staging/dev environments. Local Kubernetes clusters (kind, minikube) can use the new etcd version for testing
  • Upgrade from v3.4: If you're still on v3.4, plan an upgrade to at least v3.5 before v3.7 reaches GA
  • Check v2store dependencies: Use etcdctl endpoint status to check your storage version. If you're still on v2, migrate immediately
  • Try RangeStream in your applications: If you have apps that query etcd directly, experiment with the RangeStream RPC instead of regular Range calls
# Pull etcd 3.7.0-beta.0
docker pull gcr.io/etcd-development/etcd:v3.7.0-beta.0

# Run a local test cluster
docker run --rm -d --name etcd-beta \
  -p 2379:2379 -p 2380:2380 \
  gcr.io/etcd-development/etcd:v3.7.0-beta.0 \
  /usr/local/bin/etcd \
  --data-dir=/etc-data \
  --name node1 \
  --listen-client-urls http://0.0.0.0:2379 \
  --advertise-client-urls http://0.0.0.0:2379 \
  --listen-peer-urls http://0.0.0.0:2380

# Test RangeStream
etcdctl get /test --prefix --stream

Expected Timeline

SIG-etcd expects to release a few more betas during May-June 2026, focused on protobuf library refactoring. Release candidates and the final GA release are likely by late June or early July 2026.

Summary

etcd 3.7.0 is a significant upgrade for the entire Kubernetes ecosystem. RangeStream solves a real problem developers face daily โ€” slow queries on large clusters. Removing v2store marks a milestone: etcd has truly matured after nearly a decade of development.

If you run a Kubernetes cluster, monitoring etcd isn't optional โ€” it's the foundation of everything. Test the beta, report issues, and prepare your upgrade path today.

Have you tested etcd 3.7.0-beta yet? Running into issues with RangeStream? Share your experience in the comments.


This post was written with AI assistance (Amy ๐ŸŒธ). Content has been reviewed by the author.

Related Posts