etcd
A distributed key-value store that uses Raft to keep a small, critical dataset consistent across a cluster.
- Category: Storage & Database
- CNCF maturity: Graduated
- Language: Go
- License: Apache-2.0
- Repository: etcd-io/etcd
- Documented at commit:
61d518f(2026-06-19, main)
What it is
etcd is a strongly consistent key-value store. Every write goes through the Raft consensus protocol, so a majority of cluster members agree on the order of changes before any write is acknowledged. This gives linearizable reads and writes, which is what a distributed system needs for its configuration and coordination data.
The store keeps data under multi-version concurrency control (MVCC). Each change creates a new revision instead of overwriting in place, so clients can read past revisions, watch a key for changes from a given revision, and compact old history when it is no longer needed. On top of the store, etcd adds leases (keys that expire), role-based access control, and a gRPC API.
etcd is best known as the primary datastore for Kubernetes, where it holds all cluster state. It is built in Go and ships as three binaries: the etcd server, the etcdctl client, and the etcdutl maintenance tool.
When to use it
- You need a small dataset (configuration, leader election, service discovery, locks) replicated with strong consistency across a few nodes.
- You want to watch keys and react to changes, or use TTL-based leases for liveness.
- You are running Kubernetes or building a control plane that needs a reliable source of truth.
When it is the wrong tool:
- It is not a general-purpose database. The dataset is expected to fit in memory and stay under the storage quota, so it does not suit bulk application data or large blobs.
- A write-heavy workload that does not need consensus pays for replication it never uses.
In this deep-dive
- History: origin, milestones, and why it exists.
- Architecture: components and how requests flow.
- Adoption & Ecosystem: who runs it and what surrounds it.
- Internals: the code paths that matter, read from source.
- Getting Started: install and a first working setup.