| etcd | |
|---|---|
| | |
| Initial release | January 28, 2015 [1] |
| Stable release | |
| Repository | |
| Written in | Go |
| Service name | etcd |
| Type | Key–value database |
| License | Apache License 2.0 |
| Website | etcd |
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 was originally developed as part of the CoreOS project, it was first announced in June of 2013. [5] It was later donated the project 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 contributers 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]
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]
The software consists of three executables: [6]
etcdetcdctletcdutlOn 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]
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]
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]