Etcd
Distributed key-value database
From Wikipedia, the free encyclopedia
etcd is a key-value database commonly deployed with distributed systems.[3] The software is used by Kubernetes.[4] It is written in the Go programming language and published under the Apache License 2.0.
| etcd | |
|---|---|
| Initial release | January 28, 2015[1] |
| Stable release | |
| Written in | Go |
| Service name | etcd |
| Type | Key–value database |
| License | Apache License 2.0 |
| Website | etcd |
| Repository | |
History
etcd was originally developed as part of the CoreOS project, it was first announced in June of 2013.[5] It was later donated to the Cloud Native Computing Foundation (CNCF).[6] It became a CNCF incubating project in December 2018, and graduated in November of 2020.[4][7] At the time, the maintainer team consisted of 10 members, including: Amazon, Google Cloud, IBM, Alibaba, and Red Hat.[7] As of 2018[update], all 32 of the CFNFs Kubernetes compliant distributions and platforms used etcd as their datastore.[5]
According to a 2024 report by the CNCF, the project had over 3300 contributors and at least 450 contributing companies.[8]
The first stable version of etcd, v2.0.0, was released on January 28, 2015.[1][5] v3.0.0 was released on June 30, 2016.[9]
Name
The name "etcd" is derived from the Unix convention of storing system configuration files in the /etc directory, which applies to a single system, etcd stores configurations for a distributed system, hence the appended "d" standing for "distributed".[10][11]
Architecture
The software consists of three executables:[6]
etcdetcdctletcdutl
On particular database entries, locks can be set to prevent writing by other entities while it is being used.[6] It uses the raft consensus algorithm.[7][4]
Etcd was initially inspired by Chubby, a distributed lock manager developed Google in 2006, as well as Apache ZooKeeper.[12][13][14][15]
Features
It supports TLS/SSL encryption, exposes a client-facing gRPC API,[7] and supports multiversion concurrency control,[16] and runtime cluster membership reconfiguration.[16][17]
The official IANA assigned ports for etcd are TCP 2379/2380.[1][18]
Users
Etcd is used to store cluster data by default for most Kubernetes implementations,[5][4] like AWS EKS.[19] One notable exception being Google Kubernetes Engine, whose control-plane datastore was migrated from etcd to a Spanner-based store in 2024, while preserving etcd compatibility.[20]
Kubernetes also depends on the etcd API to communicate with its datastore, meaning that all storage backends used by it are required to support the etcd API.[20][21]