etcd

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
etcd
Initial releaseJanuary 28, 2015; 11 years ago (2015-01-28)[1]
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Written inGo
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    Service nameetcd
    TypeKey–value database
    LicenseApache License 2.0

    etcd is a key-value database commonly deployed with distributed systems.[2] The software is used by Kubernetes.[3] It is written in the Go programming language and published under the Apache License 2.0.

    History

    [edit | edit source]

    etcd was originally developed as part of the CoreOS project, it was first announced in June of 2013.[4] It was later donated the project to the Cloud Native Computing Foundation (CNCF).[5] It became a CNCF incubating project in December 2018, and graduated in November of 2020.[3][6] At the time, the maintainer team consisted of 10 members, including: Amazon, Google Cloud, IBM, Alibaba, and Red Hat.[6] As of 2018, all 32 of the CFNFs Kubernetes compliant distributions and platforms used etcd as their datastore.[4]

    According to a 2024 report by the CNCF, the project had over 3300 contributers and at least 450 contributing companies.[7]

    The first stable version of etcd, v2.0.0, was released on January 28, 2015.[1][4] v3.0.0 was released on June 30, 2016.[8]

    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".[9][10]

    Architecture

    [edit | edit source]

    The software consists of three executables:[5]

    • etcd
    • etcdctl
    • etcdutl

    On particular database entries, locks can be set to prevent writing by other entities while it is being used.[5] It uses the raft consensus algorithm.[6][3]

    Etcd was initially inspired by Chubby, a distributed lock manager developed Google in 2006, as well as Apache ZooKeeper.[11][12][13][14]

    Features

    [edit | edit source]

    It supports TLS/SSL encryption, exposes a client-facing gRPC API,[6] and supports multiversion concurrency control,[15] and runtime cluster membership reconfiguration.[15][16]

    The official IANA assigned ports for etcd are TCP 2379/2380.[1][17]

    Users

    [edit | edit source]

    Etcd is used to store cluster data by default for most Kubernetes implementations,[4][3] like AWS EKS.[18] 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.[19]

    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.[19][20]

    See also

    [edit | edit source]

    References

    [edit | edit source]
    1. ^ a b c Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ a b c d Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ a b c d Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ a b c Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ a b c d Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    14. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    15. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    16. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    17. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    18. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    19. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    20. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    [edit | edit source]