Distributed reliable key-value store for the most critical data of a distributed system

Overview

etcd

Go Report Card Coverage Build Status Travis Build Status Semaphore Docs Godoc Releases LICENSE

Note: The master branch may be in an unstable or even broken state during development. Please use releases instead of the master branch in order to get stable binaries.

etcd Logo

etcd is a distributed reliable key-value store for the most critical data of a distributed system, with a focus on being:

  • Simple: well-defined, user-facing API (gRPC)
  • Secure: automatic TLS with optional client cert authentication
  • Fast: benchmarked 10,000 writes/sec
  • Reliable: properly distributed using Raft

etcd is written in Go and uses the Raft consensus algorithm to manage a highly-available replicated log.

etcd is used in production by many companies, and the development team stands behind it in critical deployment scenarios, where etcd is frequently teamed with applications such as Kubernetes, locksmith, vulcand, Doorman, and many others. Reliability is further ensured by rigorous testing.

See etcdctl for a simple command line client.

Community meetings

etcd contributors and maintainers have monthly (every four weeks) meetings at 11:00 AM (USA Pacific) on Thursday.

An initial agenda will be posted to the shared Google docs a day before each meeting, and everyone is welcome to suggest additional topics or other agendas.

Time:

Join Hangouts Meet: meet.google.com/umg-nrxn-qvs

Join by phone: +1 405-792-0633‬ PIN: ‪299 906‬#

Getting started

Getting etcd

The easiest way to get etcd is to use one of the pre-built release binaries which are available for OSX, Linux, Windows, and Docker on the release page.

For more installation guides, please check out play.etcd.io and operating etcd.

For those wanting to try the very latest version, build the latest version of etcd from the master branch. This first needs Go installed (version 1.13+ is required). All development occurs on master, including new features and bug fixes. Bug fixes are first targeted at master and subsequently ported to release branches, as described in the branch management guide.

Running etcd

First start a single-member cluster of etcd.

If etcd is installed using the pre-built release binaries, run it from the installation location as below:

/tmp/etcd-download-test/etcd

The etcd command can be simply run as such if it is moved to the system path as below:

mv /tmp/etcd-download-test/etcd /usr/local/bin/
etcd

If etcd is built from the master branch, run it as below:

./bin/etcd

This will bring up etcd listening on port 2379 for client communication and on port 2380 for server-to-server communication.

Next, let's set a single key, and then retrieve it:

etcdctl put mykey "this is awesome"
etcdctl get mykey

etcd is now running and serving client requests. For more, please check out:

etcd TCP ports

The official etcd ports are 2379 for client requests, and 2380 for peer communication.

Running a local etcd cluster

First install goreman, which manages Procfile-based applications.

Our Procfile script will set up a local example cluster. Start it with:

goreman start

This will bring up 3 etcd members infra1, infra2 and infra3 and optionally etcd grpc-proxy, which runs locally and composes a cluster.

Every cluster member and proxy accepts key value reads and key value writes.

Follow the steps in Procfile.learner to add a learner node to the cluster. Start the learner node with:

goreman -f ./Procfile.learner start

Next steps

Now it's time to dig into the full etcd API and other guides.

Contact

Contributing

See CONTRIBUTING for details on submitting patches and the contribution workflow.

Reporting bugs

See reporting bugs for details about reporting any issues.

Reporting a security vulnerability

See security disclosure and release process for details on how to report a security vulnerability and how the etcd team manages it.

Issue and PR management

See issue triage guidelines for details on how issues are managed.

See PR management for guidelines on how pull requests are managed.

etcd Emeritus Maintainers

These emeritus maintainers dedicated a part of their career to etcd and reviewed code, triaged bugs, and pushed the project forward over a substantial period of time. Their contribution is greatly appreciated.

  • Fanmin Shi
  • Anthony Romano

License

etcd is under the Apache 2.0 license. See the LICENSE file for details.

Issues
  • Random performance issue on etcd 3.4

    Random performance issue on etcd 3.4

    Hello,

    We are running a 5 node etcd cluster:

    $ etcdctl endpoint status 
    etcd01, 507905ef22a349ce, 3.4.7, 3.1 GB, true, false, 785, 17694912855, 17694912855, 
    etcd02, 96622104eaa8652d, 3.4.7, 3.1 GB, false, false, 785, 17694912881, 17694912880, 
    ectd03, e91fce12ee84c080, 3.4.7, 3.1 GB, false, false, 785, 17694912903, 17694912903, 
    etcd04, 400fc14411f50272, 3.4.7, 3.1 GB, false, false, 785, 17694912989, 17694912985, 
    etcd05, 87c46f0b178dc777, 3.4.7, 3.1 GB, false, false, 785, 17694913043, 17694913028, 
    

    And we're having some weird performance issue eg:

    # etcdctl endpoint health
    etcd01 is healthy: successfully committed proposal: took = 12.462058ms
    etcd03 is healthy: successfully committed proposal: took = 18.826686ms
    etcd02 is healthy: successfully committed proposal: took = 19.418745ms
    etcd04 is healthy: successfully committed proposal: took = 24.314474ms
    etcd05 is healthy: successfully committed proposal: took = 244.761598ms
    
    # etcdctl endpoint health
    etcd01 is healthy: successfully committed proposal: took = 13.505405ms
    etcd03 is healthy: successfully committed proposal: took = 21.905048ms
    etcd04 is healthy: successfully committed proposal: took = 22.569332ms
    etcd02 is healthy: successfully committed proposal: took = 23.10597ms
    etcd05 is healthy: successfully committed proposal: took = 24.182998ms
    
    # etcdctl endpoint health
    etcd05is healthy: successfully committed proposal: took = 24.854541ms
    etcd01 is healthy: successfully committed proposal: took = 86.045049ms
    etcd03 is healthy: successfully committed proposal: took = 171.771975ms
    etcd04 is healthy: successfully committed proposal: took = 576.218846ms
    etcd02 is healthy: successfully committed proposal: took = 1.06666032s
    

    Not sure how to debug it, it looks pretty random. Feel free to ask for more info!

    stale 
    opened by Sh4d1 76
  • Data inconsistency in etcd version 3.3.11

    Data inconsistency in etcd version 3.3.11

    etcdctl get command returns values sometimes and sometimes it does not return a value even if key value is present in etcd. You can see following command output executed immediately one by one.

    bash-4.4$ etcdctl put /test thisistestvalue OK bash-4.4$ etcdctl get /test bash-4.4$ bash-4.4$ etcdctl get /test bash-4.4$ etcdctl get /test /test thisistestvalue bash-4.4$ etcdctl get /test /test thisistestvalue

    From below command, we can see that the inconsistence happens. We can see each time we query using etcdctl get and create_revision is different sometimes giving different values.

    bash-4.4$ ETCDCTL_API=3 etcdctl get /test --write-out json --consistency="s" {"header":{"cluster_id":10661059405016682411,"member_id":7511149175418186860,"revision":36793,"raft_term":16}} bash-4.4$ ETCDCTL_API=3 etcdctl get /test --write-out json --consistency="s"

    {"header":{"cluster_id":10661059405016682411,"member_id":14491470182485552592,"revision":10495,"raft_term":16} ,"kvs":[{"key":"L3Rlc3Q=","create_revision":6830,"mod_revision":6830,"version":1,"value":"dGVzdHZhbHVl"}],"count":1} bash-4.4$ ETCDCTL_API=3 etcdctl get /test --write-out json --consistency="s" {"header":{"cluster_id":10661059405016682411,"member_id":12240595110633392601,"revision":36802,"raft_term":16}} bash-4.4$

    bash-4.4$ ETCDCTL_API=3 etcdctl get /test1 --prefix=true --write-out json

    {"header":{"cluster_id":10661059405016682411,"member_id":12240595110633392601,"revision":36818,"raft_term":16} ,"kvs":[{"key":"L2VyaWMtY2Nlcy1leHRlbnNpb24tbWFuYWdlci90ZXN0","create_revision":33064,"mod_revision":33064,"version":1,"value":"dmFsdWV0ZXN0"}],"count":1} bash-4.4$ bash-4.4$ ETCDCTL_API=3 etcdctl get /test1 --prefix=true --write-out json

    {"header":{"cluster_id":10661059405016682411,"member_id":14491470182485552592,"revision":10511,"raft_term":16} ,"kvs":[{"key":"L2VyaWMtY2Nlcy1leHRlbnNpb24tbWFuYWdlci90ZXN0","create_revision":3641,"mod_revision":3641,"version":1,"value":"bXl0ZXN0dmFsdWU="}],"count":1} bash-4.4$ ETCDCTL_API=3 etcdctl get /test1 --prefix=true --write-out json

    {"header":{"cluster_id":10661059405016682411,"member_id":7511149175418186860,"revision":36819,"raft_term":16} ,"kvs":[{"key":"L2VyaWMtY2Nlcy1leHRlbnNpb24tbWFuYWdlci90ZXN0","create_revision":33064,"mod_revision":33064,"version":1,"value":"dmFsdWV0ZXN0"}],"count":1}

    Check the operation test as below: After performing Delete operation also we are able to get value for the deleted key.

    bash-4.4$ etcdctl put /temp/test mytestvalue OK bash-4.4$ etcdctl get /temp/test /temp/test mytestvalue bash-4.4$ bash-4.4$ etcdctl del /temp/test 1 bash-4.4$ etcdctl get /temp/test /temp/test mytestvalue bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test /temp/test mytestvalue bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test /temp/test mytestvalue bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test /temp/test mytestvalue bash-4.4$ etcdctl del /temp/test 0 bash-4.4$ etcdctl get /temp/test /temp/test mytestvalue bash-4.4$ etcdctl del /temp/test 0 bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test bash-4.4$ etcdctl get /temp/test /temp/test mytestvalue

    These kind of data inconsistency is seen in etcd . ETCD guarantees Data consistency. Could you please help understanding the issue here.? whats happening exactly?

    opened by rahulbapumore 73
  • 3.5 release next steps: Code freeze Monday 5/17

    3.5 release next steps: Code freeze Monday 5/17

    etcd 3.5 has seen a tremendous amount of new features bug fixes and performance and stability improvements. At this time I would like to thank everyone for the hard work and dedication. As per the community meeting on May 6th we have outlined Monday, May 17th as code freeze for the 3.5 release. Below are the proposed series of events for input.

    Steps:

    • [x] cut release-3.5 branch from master (now main). All future merges to main will be 3.6 moving forward (Monday AM 5/17).
    • [x] cut new v3.5.0-beta.3
    • [x] cut new modularized release v3.5.0-beta.3 (Monday AM 5/17).
    • [x] begin correctness and performance/stress testing (ideas, ownership?)

    After testing and validation of the beta, we can consider a sequential beta release or move towards a v3.5 release candidate.

    Your input is greatly appreciated.

    cc @xiang90 @wenjiaswe @ptabor @gyuho @jingyih @lilic @jpbetz @spzala

    area/community 
    opened by hexfusion 73
  • Bad latency (>100ms) of storage

    Bad latency (>100ms) of storage

    https://github.com/coreos/etcd/pull/4070 added a new benchmark for stressing etcd storage. It found a very high latency of put process.

    When a number of written keys is not so large (e.g. 1000), the result will be like this:

    total: 2.686489ms
    average: 2.686µs
    minimum latency: 1.545µs
    maximum latency: 18.209µs
    

    When the number of keys is larger (e.g. 10000), the result will be like this:

    total: 184.821125ms
    average: 18.482µs
    rate: 54106.3691
    minimum latency: 1.719µs
    maximum latency: 142.160798ms
    

    The high latency is also confirmed by @xiang90 : https://github.com/coreos/etcd/pull/4070#issuecomment-168287088

    The result can be easily reproduced with the benchmark e.g. ./benchmark storage put --total 10000.

    opened by mitake 62
  • client: file and environment variables based configuration

    client: file and environment variables based configuration

    Current etcd client library doesn't provide a mechanism for creating client.Client object based on file or env vars. Therefore users must write their own feature for the purpose in their applications.

    For avoiding the duplicated implementations, this PR adds new functions for creating client with file and environment variables based on viper.

    NewWithFile(client.Config, configPath string): create a new Client with a file. Any file formats supported by viper will be accepted.

    NewWithEnv(client.Config): create a new Client with values in environment variables.

    Like the existing New(), application must pass a client.Config object because there are some fields which isn't related to configuration (e.g. Transport).

    Fixes https://github.com/coreos/etcd/issues/4008

    opened by mitake 60
  • Move etcd to github.com/etcd-io/etcd*

    Move etcd to github.com/etcd-io/etcd*

    We are moving etcd and other sub-projects to its own GitHub organization.

    The new org will be https://github.com/etcd-io.

    Many popular Go projects have done this, for better project management:

    • https://github.com/google/protobuf/issues/4796
    • https://github.com/kubernetes/kubernetes/issues/12211, https://github.com/kubernetes/kubernetes/issues/29014
    • https://github.com/vitessio/vitess/pull/3702, https://github.com/vitessio/vitess/pull/3725

    Some of our motivations are:

    • Better team management.
    • Better CI resource utilization; currently, etcd relies on free-tier public CI service, and sharing all resources with other github.com/coreos projects slows down development process.
    • More visibilities to sub-projects and adopt more community projects under etcd organization.

    Move github.com/coreos/etcd and github.com/coreos/bbolt:

    • [x] Decide which namespace we will be using (1 ~ 2 weeks)
    • [x] Announce to etcd and Kubernetes communities (Mon, August 6, 2018)
    • [x] Update all internal github.com/coreos/etcd import paths in all branches (5PM PST, Mon, August 27, 2018)
    • [x] Disable CI integration with current org (5PM PST, Mon, August 27, 2018)
    • [x] Transfer ownership (5PM PST, Mon, August 27, 2018)
    • [x] Set up new CIs (5PM PST, Mon, August 27, 2018)
      • Add environmental variable ETCD_ELECTION_TIMEOUT_TICKS=600
    • [x] Make sure old URL redirects to new URL (5PM PST, Mon, August 27, 2018)
    • [x] Set up vanity import paths to go.etcd.io/$proj

    Sub-projects that do not have downstream projects can be transferred right away:

    • [x] https://github.com/coreos/cetcd (9PM PST, Tue, August 7, 2018)
    • [x] https://github.com/coreos/zetcd (9PM PST, Tue, August 7, 2018)
    • [x] https://github.com/coreos/gofail (9PM PST, Tue, August 7, 2018)
    • [x] https://github.com/coreos/dbtester (Mon, August 6, 2018)
    • [x] https://github.com/coreos/etcdlabs (Mon, August 6, 2018)
    • [x] https://github.com/coreos/etcd-play (Mon, August 6, 2018)
    • [x] https://github.com/coreos/protodoc (Mon, August 6, 2018)
    • [x] https://github.com/coreos/jetcd (9PM PST, Tue, August 7, 2018)

    Projects that won't be moved:

    • https://github.com/coreos/etcd-operator
    • https://github.com/coreos/discovery.etcd.io

    Note: GitHub will redirect all requests to new URL.

    /cc @xiang90 @jpbetz @lburgazzoli @philips @jberkus

    opened by gyuho 59
  • etcd not compatible with grpc v1.30.0

    etcd not compatible with grpc v1.30.0

    To reproduce:

    $ go get google.golang.org/[email protected]
    go: google.golang.org/grpc latest => v1.30.0
    $ go mod tidy
    ...
    go.etcd.io/etcd/v3/clientv3/naming imports
            google.golang.org/grpc/naming: module google.golang.org/[email protected] found (v1.30.0), but does not contain package google.golang.org/grpc/naming
    

    This is a problem for dependents of etcd who want to use the latest grpc.

    The naming package was removed at https://github.com/grpc/grpc-go/pull/3314 and was deprecated in favour of resolver.

    I can work on a pull request if that's helpful.

    area/clientv3 
    opened by xiegeo 55
  • clientv3: grpc-go (v1.27.0) made API changes to balancer / resolver.

    clientv3: grpc-go (v1.27.0) made API changes to balancer / resolver.

    After the release of grpc-go v1.27.0, an error occurred while pulling etcd / clientv3. The steps to reproduce it are as follows:

    1. go.mod:
    go 1.13
    
    require (
    	github.com/coreos/etcd v3.3.18+incompatible // indirect
    	github.com/coreos/go-systemd v0.0.0-00010101000000-000000000000 // indirect
    	github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect
    	github.com/gogo/protobuf v1.3.1 // indirect
    	github.com/google/uuid v1.1.1 // indirect
    	go.etcd.io/etcd v3.3.18+incompatible // indirect
    	go.uber.org/zap v1.13.0 // indirect
    	google.golang.org/grpc v1.27.0 // indirect
    )
    
    replace github.com/coreos/go-systemd => github.com/coreos/go-systemd/v22 v22.0.0
    
    1. command:
    $ go get go.etcd.io/etcd/clientv3
    # github.com/coreos/etcd/clientv3/balancer/resolver/endpoint
    ../../go/pkg/mod/github.com/coreos/[email protected]+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:114:78: undefined: resolver.BuildOption
    ../../go/pkg/mod/github.com/coreos/[email protected]+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:182:31: undefined: resolver.ResolveNowOption
    # github.com/coreos/etcd/clientv3/balancer/picker
    ../../go/pkg/mod/github.com/coreos/[email protected]+incompatible/clientv3/balancer/picker/err.go:37:44: undefined: balancer.PickOptions
    ../../go/pkg/mod/github.com/coreos/[email protected]+incompatible/clientv3/balancer/picker/roundrobin_balanced.go:55:54: undefined: balancer.PickOptions
    
    1. PR:https://github.com/etcd-io/etcd/pull/11564
    area/clientv3 
    opened by eddycjy 54
  • Proxies & Config API

    Proxies & Config API

    Overview

    This pull request adds the ability for nodes to join as proxies when the cluster size limit is reached.

    Changes

    • Peer & Proxy Management added to Registry.
    • Mode added to PeerServer. This can be either PeerMode or ProxyMode.
    • JoinCommand sets overflow nodes as proxies.
    • RemoveCommand removes proxies in addition to peers.
    • Leader responses return X-Leader-Peer-URL & X-Leader-Client-URL headers.
    • New Error (402): Proxy Internal Error

    Questions

    How should we update the proxy urls?

    I would like to minimize the internal state that proxies have to hold and make them as dumb as possible. Currently it retrieves the proxy url via the initial join command. It can also update the proxy urls if the leader changes but the original leader is still available. However, it doesn't handle a leader failure.

    My thought is to simply have a new leader continually ping the proxies after leader change until all proxies have been notified.

    The other option would be to maintain a cluster configuration within the proxies but that means that we're maintaining more state.

    /cc @philips @xiangli-cmu

    opened by benbjohnson 54
  • Etcd size sometimes starts growing and grows until

    Etcd size sometimes starts growing and grows until "mvcc: database space exceeded"

    We have observed already few cases, where suddenly (after days of running a GKE cluster), the size of database starts growing.

    As an example, we have a cluster, that was running without any issues for ~2 weeks (size of database was ~16MB), and then its database started growing. The growth wasn't immediate - it took ~2days, before it reached 4GB limit and there were steps of growing. For the reference we have backups (snapshots) (done via etcdctl snapshot) that reflect the growth speed (the name contains the time when it was made)

      ... // all snapshots are roughly 16MB
      2017-05-24T04:57:24-07:00_snapshot.db 16,27 MB
      2017-05-24T05:57:26-07:00_snapshot.db 29,06 MB
      2017-05-24T06:57:30-07:00_snapshot.db 108,98 MB
      2017-05-24T07:57:36-07:00_snapshot.db 177,57 MB
      2017-05-24T08:57:51-07:00_snapshot.db 308,4 MB        
      2017-05-24T09:58:32-07:00_snapshot.db 534,54 MB
      2017-05-24T11:00:16-07:00_snapshot.db 655,73 MB
      2017-05-24T12:00:55-07:00_snapshot.db 764,22 MB
      ... // all snapshots of the same size
      2017-05-25T15:15:10-07:00_snapshot.db 764,22 MB
      2017-05-25T16:16:25-07:00_snapshot.db 818,14 MB
      2017-05-25T17:26:35-07:00_snapshot.db 963,93 MB
      ... // all snapshots of the same size
      2017-05-25T22:25:08-07:00_snapshot.db 963,93 MB
      2017-05-25T23:27:03-07:00_snapshot.db 1,56 GB
      2017-05-26T00:30:13-07:00_snapshot.db 1,56 GB
      2017-05-26T01:05:24-07:00_snapshot.db 1,56 GB
      2017-05-26T02:24:21-07:00_snapshot.db 2,18 GB
      ... // all snapshots of the same size
      2017-05-26T08:43:07-07:00_snapshot.db 2,18 GB
      2017-05-26T09:46:47-07:00_snapshot.db 2,19 GB
      ... // all snapshots of the same size
      2017-05-26T16:11:31-07:00_snapshot.db 2,19 GB
      2017-05-26T17:16:47-07:00_snapshot.db 2,65 GB
      2017-05-26T18:22:37-07:00_snapshot.db 3,12 GB
      2017-05-26T19:29:07-07:00_snapshot.db 3,86 GB
      2017-05-26T20:33:24-07:00_snapshot.db 4,6 GB
      <boom>
    

    We've checked that we were doing compaction very regularly every 5m for the whole time - so it doesn't seem to be the same as: https://github.com/coreos/etcd/issues/7944 I'm attaching the interested lines from etcd logs in etcd-compaction.txt

    [Note time in that logs are in UTC, and time in snapshot names is PST, so 7 hours difference]

    To summarize, the compaction was always at most few thousands of transactions (so it's not that we did a lot during some 5m period), though there were some longer compactions, up to ~7s.

    I started digging into individual snapshots and found some strange thing (I was using bolt)

    1. 16MB snapshot:
    Aggregate statistics for 10 buckets
    
    Page count statistics
            Number of logical branch pages: 10
            Number of physical branch overflow pages: 0
            Number of logical leaf pages: 789
            Number of physical leaf overflow pages: 518
    Tree statistics
            Number of keys/value pairs: 1667
            Number of levels in B+tree: 3
    Page size utilization
            Bytes allocated for physical branch pages: 40960
            Bytes actually used for branch data: 26494 (64%)
            Bytes allocated for physical leaf pages: 5353472
            Bytes actually used for leaf data: 3411680 (63%)
    Bucket statistics
            Total number of buckets: 10
            Total number on inlined buckets: 9 (90%)
            Bytes used for inlined buckets: 536 (0%)
    
    1. 534MB snapshot (5 hours later):
    Aggregate statistics for 10 buckets
    
    Page count statistics
            Number of logical branch pages: 65
            Number of physical branch overflow pages: 0
            Number of logical leaf pages: 5559
            Number of physical leaf overflow pages: 107743
    Tree statistics
            Number of keys/value pairs: 13073
            Number of levels in B+tree: 3
    Page size utilization
            Bytes allocated for physical branch pages: 266240
            Bytes actually used for branch data: 186912 (70%)
            Bytes allocated for physical leaf pages: 464084992
            Bytes actually used for leaf data: 451590110 (97%)
    Bucket statistics
            Total number of buckets: 10
            Total number on inlined buckets: 9 (90%)
            Bytes used for inlined buckets: 536 (0%)
    
    1. 1.56GB snapshot (another ~36 hours later):
    Aggregate statistics for 10 buckets
    
    Page count statistics
            Number of logical branch pages: 70
            Number of physical branch overflow pages: 0
            Number of logical leaf pages: 4525
            Number of physical leaf overflow pages: 115179
    Tree statistics
            Number of keys/value pairs: 10978
            Number of levels in B+tree: 3
    Page size utilization
            Bytes allocated for physical branch pages: 286720
            Bytes actually used for branch data: 152723 (53%)
            Bytes allocated for physical leaf pages: 490307584
            Bytes actually used for leaf data: 478196884 (97%)
    Bucket statistics
            Total number of buckets: 10
            Total number on inlined buckets: 9 (90%)
            Bytes used for inlined buckets: 536 (0%)
    
    1. 3.86GB snapshot (another ~18 hours later)
    Aggregate statistics for 10 buckets
    
    Page count statistics
            Number of logical branch pages: 90
            Number of physical branch overflow pages: 0
            Number of logical leaf pages: 6219
            Number of physical leaf overflow pages: 6791
    Tree statistics
            Number of keys/value pairs: 15478
            Number of levels in B+tree: 3
    Page size utilization
            Bytes allocated for physical branch pages: 368640
            Bytes actually used for branch data: 209621 (56%)
            Bytes allocated for physical leaf pages: 53288960
            Bytes actually used for leaf data: 36704465 (68%)
    Bucket statistics
            Total number of buckets: 10
            Total number on inlined buckets: 9 (90%)
            Bytes used for inlined buckets: 536 (0%)
    
    1. 4.6GB snapshot (1hour later, right before exceeding space):
    Aggregate statistics for 10 buckets
    
    Page count statistics
            Number of logical branch pages: 89
            Number of physical branch overflow pages: 0
            Number of logical leaf pages: 6074
            Number of physical leaf overflow pages: 6713
    Tree statistics
            Number of keys/value pairs: 15173
            Number of levels in B+tree: 3
    Page size utilization
            Bytes allocated for physical branch pages: 364544
            Bytes actually used for branch data: 204788 (56%)
            Bytes allocated for physical leaf pages: 52375552
            Bytes actually used for leaf data: 36092789 (68%)
    Bucket statistics
            Total number of buckets: 10
            Total number on inlined buckets: 9 (90%)
            Bytes used for inlined buckets: 564 (0%)
    

    What is extremely interesting to me is that both:

    • Number of physical leaf overflow pages
    • Bytes allocated for physical leaf pages dropped by order of magnitude in this 3.86GB snapshot, but the total size of database didn't drop

    Unfortunately I can't provide any of those snapshots due to privacy reasons, but maybe you can see anything that we can investigate (or share results of some commands) that can help with debugging?

    @xiang90 @hongchaodeng @mml @lavalamp

    opened by wojtek-t 53
  • Query: apply entries took too long for 1 get request

    Query: apply entries took too long for 1 get request

    Environment: 4 core, Intel i5 , 4 GB , Ubuntu 14.04

    started 3 node etcd cluster in local machine using

    goreman start the Procfile is the default provided, no changes.

    did a get operation using root user ./etcdctl get key1 --user=root

    get following text in the logs:

    19:25:07 etcd3 | 2016-09-27 19:25:07.511023 I | auth: authorized root, token is xWyuAJdKSJYXpOne.1765 19:25:07 etcd3 | 2016-09-27 19:25:07.511068 W | etcdserver: apply entries took too long [79.880367ms for 1 entries] 19:25:07 etcd3 | 2016-09-27 19:25:07.511076 W | etcdserver: avoid queries with large range/delete range! 19:25:07 etcd2 | 2016-09-27 19:25:07.521366 I | auth: authorized root, token is xWyuAJdKSJYXpOne.1765 19:25:07 etcd2 | 2016-09-27 19:25:07.521439 W | etcdserver: apply entries took too long [90.269411ms for 1 entries] 19:25:07 etcd2 | 2016-09-27 19:25:07.521482 W | etcdserver: avoid queries with large range/delete range! 19:25:07 etcd1 | 2016-09-27 19:25:07.526534 I | auth: authorized root, token is xWyuAJdKSJYXpOne.1765 19:25:07 etcd1 | 2016-09-27 19:25:07.526579 W | etcdserver: apply entries took too long [95.582386ms for 1 entries] 19:25:07 etcd1 | 2016-09-27 19:25:07.526588 W | etcdserver: avoid queries with large range/delete range!

    Memory Usage: top-etcd

    takes 10 GB per process

    Query:

    • why does a get operation generates this log, as if the nodes are under load ? did i miss to set some options?
    • is the memory usage normal? what can i do to reduce it.
    • using v3 api, does a get request go through the raft layer? is there a non-linearizable read option in v3 , which doesnt go through raft layer?
    opened by vimalk78 52
  • Etcd v3 api: Initialization client error

    Etcd v3 api: Initialization client error

    What happened?

    etcd client v3: v3.5.4

    I get an error when I initialize the client.

    When I change RejectOldCluster to false everything works fine.

    	cfg := clientv3.Config{
    		Endpoints:            []string{"192.168.3.41:22479", "192.168.3.41:22379", "192.168.3.41:22579"},
    		Username:             "root",
    		Password:             "123456",
    		RejectOldCluster:     true,
    		DialTimeout:          5 * time.Second,
    		DialKeepAliveTime:    5 * time.Second,
    		DialKeepAliveTimeout: 5 * time.Second,
    		AutoSyncInterval:     time.Minute,
    	}
    
    {"level":"warn","ts":"2022-08-08T16:05:33.632+0800","logger":"etcd-client","caller":"[email protected]/retry_interceptor.go:62","msg":"retrying of unary invoker failed","target":"etcd-endpoints://0xc0001fb500/192.168.3.41:22479","attempt":0,"error":"rpc error: code
     = Canceled desc = context canceled"}
    {"level":"warn","ts":"2022-08-08T16:05:33.639+0800","logger":"etcd-client","caller":"[email protected]/retry_interceptor.go:62","msg":"retrying of unary invoker failed","target":"etcd-endpoints://0xc0001fb500/192.168.3.41:22479","attempt":0,"error":"rpc error: code
     = Canceled desc = context canceled"}
    
    

    There is a problem at line 512 of client.go where it should not break when there are no err. If other goroutines are slow, context canceled will occur. But this problem does not affect normal use. image

    What did you expect to happen?

    No error output.

    How can we reproduce it (as minimally and precisely as possible)?

    step 1

    docker-compose up -d
    

    docker-compose.yaml:

    version: "3.0"
    services:
      etcd1:
        image: quay.io/coreos/etcd:v3.5.4
        container_name: "etcd1"
        networks:
          internal:
            ipv4_address: 172.25.1.3
        ports:
          - "22379-22380:22379-22380"
        volumes:
          - ./etcd1:/var/etcd/etcd-data
        environment:
          - ETCD_NAME=etcd1
          - ETCD_DATA_DIR=/var/etcd/etcd-data
          - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:22379
          - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:22380
          - ETCD_ADVERTISE_CLIENT_URLS=http://192.168.3.41:22379
          - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://172.25.1.3:22380
          - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
          - ETCD_INITIAL_CLUSTER=etcd1=http://172.25.1.3:22380,etcd2=http://172.25.1.4:22480,etcd3=http://172.25.1.5:22580
          - ETCD_INITIAL_CLUSTER_STATE=new      
      etcd2:
        image: quay.io/coreos/etcd:v3.5.4
        container_name: "etcd2"
        networks:
          internal:
            ipv4_address: 172.25.1.4
        ports:
          - "22479-22480:22479-22480"
        volumes:
          - ./etcd2:/var/etcd/etcd-data
        environment:
          - ETCD_NAME=etcd2
          - ETCD_DATA_DIR=/var/etcd/etcd-data
          - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:22479
          - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:22480
          - ETCD_ADVERTISE_CLIENT_URLS=http://192.168.3.41:22479
          - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://172.25.1.4:22480
          - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
          - ETCD_INITIAL_CLUSTER=etcd1=http://172.25.1.3:22380,etcd2=http://172.25.1.4:22480,etcd3=http://172.25.1.5:22580
          - ETCD_INITIAL_CLUSTER_STATE=new      
      etcd3:
        image: quay.io/coreos/etcd:v3.5.4
        container_name: "etcd3"
        networks:
          internal:
            ipv4_address: 172.25.1.5
        ports:
          - "22579-22580:22579-22580"
        volumes:
          - ./etcd3:/var/etcd/etcd-data
        environment:
          - ETCD_NAME=etcd3
          - ETCD_DATA_DIR=/var/etcd/etcd-data
          - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:22579
          - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:22580
          - ETCD_ADVERTISE_CLIENT_URLS=http://192.168.3.41:22579
          - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://172.25.1.5:22580
          - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
          - ETCD_INITIAL_CLUSTER=etcd1=http://172.25.1.3:22380,etcd2=http://172.25.1.4:22480,etcd3=http://172.25.1.5:22580
          - ETCD_INITIAL_CLUSTER_STATE=new       
    networks:
      internal:
        driver: bridge
        ipam:
          config:
            - subnet: 172.25.1.0/16
    

    step 2

    Initialize client.

    	cfg := clientv3.Config{
    		Endpoints:            []string{"192.168.3.41:22479", "192.168.3.41:22379", "192.168.3.41:22579"},
    		RejectOldCluster:     true,
    		DialTimeout:          5 * time.Second,
    		DialKeepAliveTime:    5 * time.Second,
    		DialKeepAliveTimeout: 5 * time.Second,
    		AutoSyncInterval:     time.Minute,
    	}
           client, err := clientv3.New(cfg)
    

    Anything else we need to know?

    No response

    Etcd version (please run commands below)

    $ etcd --version
    # paste output here
    etcd Version: 3.5.4
    Git SHA: 08407ff76
    Go Version: go1.16.15
    Go OS/Arch: linux/amd64
    
    $ etcdctl version
    # paste output here
    etcdctl version: 3.5.4
    API version: 3.5
    

    Etcd configuration (command line flags or environment variables)

    paste your configuration here

    Etcd debug information (please run commands blow, feel free to obfuscate the IP address or FQDN in the output)

    $ etcdctl member list -w table
    # paste output here
    
    +------------------+---------+-------+--------------------------+----------------------------+------------+
    |        ID        | STATUS  | NAME  |        PEER ADDRS        |        CLIENT ADDRS        | IS LEARNER |
    +------------------+---------+-------+--------------------------+----------------------------+------------+
    |  4aea8f1af490926 | started | etcd1 | https://172.25.1.3:22380 | https://192.168.3.41:22379 |      false |
    | 43038eadf883f7e2 | started | etcd3 | https://172.25.1.5:22580 | https://192.168.3.41:22579 |      false |
    | 7191a6e6cc023b1a | started | etcd2 | https://172.25.1.4:22480 | https://192.168.3.41:22479 |      false |
    +------------------+---------+-------+--------------------------+----------------------------+------------+
    
    $ etcdctl --endpoints=<member list> endpoint status -w table
    # paste output here
    +----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
    |          ENDPOINT          |        ID        | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
    +----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
    | https://192.168.3.41:22379 |  4aea8f1af490926 |   3.5.4 |   20 kB |     false |      false |         3 |         42 |                 42 |        |
    | https://192.168.3.41:22479 | 7191a6e6cc023b1a |   3.5.4 |   20 kB |     false |      false |         3 |         42 |                 42 |        |
    | https://192.168.3.41:22579 | 43038eadf883f7e2 |   3.5.4 |   20 kB |      true |      false |         3 |         42 |                 42 |        |
    +----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
    
    

    Relevant log output

    {"level":"warn","ts":"2022-08-08T16:05:33.632+0800","logger":"etcd-client","caller":"[email protected]/retry_interceptor.go:62","msg":"retrying of unary invoker failed","target":"etcd-endpoints://0xc0001fb500/192.168.3.41:22479","attempt":0,"error":"rpc error: code
     = Canceled desc = context canceled"}
    {"level":"warn","ts":"2022-08-08T16:05:33.639+0800","logger":"etcd-client","caller":"[email protected]/retry_interceptor.go:62","msg":"retrying of unary invoker failed","target":"etcd-endpoints://0xc0001fb500/192.168.3.41:22479","attempt":0,"error":"rpc error: code
     = Canceled desc = context canceled"}
    
    area/bug 
    opened by happlins 0
  • Error

    Error "listen tcp 127.0.0.1:2380: bind: address already in use" when running ETCD container

    What happened?

    I tried to use the ETCD container on an arm MacBook, but I'm having the same problem as issue #14209. (listen tcp 127.0.0.1:2380: bind: address already in use) In my case, the same issue occurs even after rebooting the computer. Instead, restart the container and it will run normally.

    What did you expect to happen?

    The container was expected to run normally.

    How can we reproduce it (as minimally and precisely as possible)?

    Steps 1-3 below are the process I was talking about. (I tested it by referring to the 'Connecting to other containers' section in the README provided by the docker hub.) step 1 $ docker network create app-tier --driver bridge

    step 2

    $ docker run -d --name Etcd-server \
        --network app-tier \
        --publish 2379:2379 \
        --publish 2380:2380 \
        --env ALLOW_NONE_AUTHENTICATION=yes \
        --env ETCD_ADVERTISE_CLIENT_URLS=http://etcd-server:2379 \
        bitnami/etcd:latest
    
    $ docker logs Etcd-server
    
    ...
    {"level":"info","ts":"2022-08-06T09:44:27.439Z","caller":"embed/etcd.go:131","msg":"configuring peer listeners","listen-peer-urls":["http://localhost:2380"]}
    {"level":"info","ts":"2022-08-06T09:44:27.449Z","caller":"embed/etcd.go:368","msg":"closing etcd server","name":"default","data-dir":"/bitnami/etcd/data","advertise-peer-urls":["http://localhost:2380"],"advertise-client-urls":["http://etcd-server:2379"]}
    {"level":"info","ts":"2022-08-06T09:44:27.450Z","caller":"embed/etcd.go:370","msg":"closed etcd server","name":"default","data-dir":"/bitnami/etcd/data","advertise-peer-urls":["http://localhost:2380"],"advertise-client-urls":["http://etcd-server:2379"]}
    {"level":"fatal","ts":"2022-08-06T09:44:27.450Z","caller":"etcdmain/etcd.go:204","msg":"discovery failed","error":"listen tcp 127.0.0.1:2380: bind: address already in use","stacktrace":"go.etcd.io/etcd/server/v3/etcdmain.startEtcdOrProxyV2\n\t/go/src/go.etcd.io/etcd/release/etcd/server/etcdmain/etcd.go:204\ngo.etcd.io/etcd/server/v3/etcdmain.Main\n\t/go/src/go.etcd.io/etcd/release/etcd/server/etcdmain/main.go:40\nmain.main\n\t/go/src/go.etcd.io/etcd/release/etcd/server/main.go:32\nruntime.main\n\t/go/gos/go1.16.15/src/runtime/proc.go:225"}
    

    step 3

    $ docker restart Etcd-server
    
    $ docker ps
    
    CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                              NAMES
    9dd6bbbd310e   bitnami/etcd:latest   "/opt/bitnami/script…"   22 minutes ago   Up 22 minutes   0.0.0.0:2379-2380->2379-2380/tcp   Etcd-server
    

    Anything else we need to know?

    No response

    Etcd version (please run commands below)

    $ etcd --version
    etcd Version: 3.5.4
    Git SHA: 08407ff76
    Go Version: go1.16.15
    Go OS/Arch: linux/amd64
    
    $ etcdctl version
    etcdctl version: 3.5.4
    API version: 3.5
    

    Etcd configuration (command line flags or environment variables)

    ALLOW_NONE_AUTHENTICATION=yes ETCD_ADVERTISE_CLIENT_URLS=http://etcd-server:2379

    Etcd debug information (please run commands blow, feel free to obfuscate the IP address or FQDN in the output)

    $ etcdctl member list -w table
    # paste output here
    
    $ etcdctl --endpoints=<member list> endpoint status -w table
    # paste output here
    

    Relevant log output

    etcd 09:44:22.78
    etcd 09:44:22.80 Welcome to the Bitnami etcd container
    etcd 09:44:22.82 Subscribe to project updates by watching https://github.com/bitnami/containers
    etcd 09:44:22.84 Submit issues and feature requests at https://github.com/bitnami/containers/issues
    etcd 09:44:22.86
    etcd 09:44:22.88 INFO  ==> ** Starting etcd setup **
    etcd 09:44:23.00 INFO  ==> Validating settings in ETCD_* env vars..
    etcd 09:44:23.03 WARN  ==> You set the environment variable ALLOW_NONE_AUTHENTICATION=yes. For safety reasons, do not use this flag in a production environment.
    etcd 09:44:23.07 INFO  ==> Initializing etcd
    etcd 09:44:23.09 INFO  ==> Generating etcd config file using env variables
    etcd 09:44:23.21 INFO  ==> There is no data from previous deployments
    etcd 09:44:23.23 INFO  ==> Obtaining cluster member ID
    etcd 09:44:23.28 INFO  ==> Starting etcd in background
    etcd 09:44:26.99 INFO  ==> Stored member ID: 8e9e05c52164694d
    etcd 09:44:27.08 INFO  ==> ** etcd setup finished! **
    
    etcd 09:44:27.19 INFO  ==> ** Starting etcd **
    {"level":"info","ts":"2022-08-06T09:44:27.426Z","caller":"flags/flag.go:113","msg":"recognized and used environment variable","variable-name":"ETCD_ADVERTISE_CLIENT_URLS","variable-value":"http://etcd-server:2379"}
    {"level":"info","ts":"2022-08-06T09:44:27.429Z","caller":"flags/flag.go:113","msg":"recognized and used environment variable","variable-name":"ETCD_AUTO_TLS","variable-value":"false"}
    {"level":"info","ts":"2022-08-06T09:44:27.430Z","caller":"flags/flag.go:113","msg":"recognized and used environment variable","variable-name":"ETCD_CLIENT_CERT_AUTH","variable-value":"false"}
    {"level":"info","ts":"2022-08-06T09:44:27.430Z","caller":"flags/flag.go:113","msg":"recognized and used environment variable","variable-name":"ETCD_DATA_DIR","variable-value":"/bitnami/etcd/data"}
    {"level":"info","ts":"2022-08-06T09:44:27.431Z","caller":"flags/flag.go:113","msg":"recognized and used environment variable","variable-name":"ETCD_LISTEN_CLIENT_URLS","variable-value":"http://0.0.0.0:2379"}
    {"level":"info","ts":"2022-08-06T09:44:27.431Z","caller":"flags/flag.go:113","msg":"recognized and used environment variable","variable-name":"ETCD_LOG_LEVEL","variable-value":"info"}
    {"level":"info","ts":"2022-08-06T09:44:27.431Z","caller":"flags/flag.go:113","msg":"recognized and used environment variable","variable-name":"ETCD_PEER_AUTO_TLS","variable-value":"false"}
    {"level":"warn","ts":"2022-08-06T09:44:27.431Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_INITIAL_ADVERTISE_PEER_URLS="}
    {"level":"warn","ts":"2022-08-06T09:44:27.432Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_DAEMON_USER=etcd"}
    {"level":"warn","ts":"2022-08-06T09:44:27.432Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_NEW_MEMBERS_ENV_FILE=/bitnami/etcd/data/new_member_envs"}
    {"level":"warn","ts":"2022-08-06T09:44:27.432Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_CERT_FILE="}
    {"level":"warn","ts":"2022-08-06T09:44:27.432Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_INITIAL_CLUSTER="}
    {"level":"warn","ts":"2022-08-06T09:44:27.432Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_BASE_DIR=/opt/bitnami/etcd"}
    {"level":"warn","ts":"2022-08-06T09:44:27.432Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_INITIAL_CLUSTER_STATE="}
    {"level":"warn","ts":"2022-08-06T09:44:27.432Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_TMP_DIR=/opt/bitnami/etcd/tmp"}
    {"level":"warn","ts":"2022-08-06T09:44:27.432Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_DISABLE_PRESTOP=no"}
    {"level":"warn","ts":"2022-08-06T09:44:27.432Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_INIT_SNAPSHOTS_DIR=/init-snapshot"}
    {"level":"warn","ts":"2022-08-06T09:44:27.432Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_INIT_SNAPSHOT_FILENAME="}
    {"level":"warn","ts":"2022-08-06T09:44:27.432Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_START_FROM_SNAPSHOT=no"}
    {"level":"warn","ts":"2022-08-06T09:44:27.432Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_DAEMON_GROUP=etcd"}
    {"level":"warn","ts":"2022-08-06T09:44:27.433Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_CONF_DIR=/opt/bitnami/etcd/conf"}
    {"level":"warn","ts":"2022-08-06T09:44:27.433Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_KEY_FILE="}
    {"level":"warn","ts":"2022-08-06T09:44:27.433Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_DISASTER_RECOVERY=no"}
    {"level":"warn","ts":"2022-08-06T09:44:27.433Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_CLUSTER_DOMAIN="}
    {"level":"warn","ts":"2022-08-06T09:44:27.433Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_ROOT_PASSWORD="}
    {"level":"warn","ts":"2022-08-06T09:44:27.433Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_NAME="}
    {"level":"warn","ts":"2022-08-06T09:44:27.433Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_INITIAL_CLUSTER_TOKEN="}
    {"level":"warn","ts":"2022-08-06T09:44:27.433Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_VOLUME_DIR=/bitnami/etcd"}
    {"level":"warn","ts":"2022-08-06T09:44:27.433Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_BIN_DIR=/opt/bitnami/etcd/bin"}
    {"level":"warn","ts":"2022-08-06T09:44:27.433Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_SNAPSHOTS_DIR=/snapshots"}
    {"level":"warn","ts":"2022-08-06T09:44:27.434Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_ON_K8S=no"}
    {"level":"warn","ts":"2022-08-06T09:44:27.434Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_LISTEN_PEER_URLS="}
    {"level":"warn","ts":"2022-08-06T09:44:27.434Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_CONF_FILE=/opt/bitnami/etcd/conf/etcd.yaml"}
    {"level":"warn","ts":"2022-08-06T09:44:27.434Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_DISABLE_STORE_MEMBER_ID=no"}
    {"level":"warn","ts":"2022-08-06T09:44:27.434Z","caller":"flags/flag.go:93","msg":"unrecognized environment variable","environment-variable":"ETCD_TRUSTED_CA_FILE="}
    {"level":"info","ts":"2022-08-06T09:44:27.436Z","caller":"etcdmain/etcd.go:73","msg":"Running: ","args":["etcd"]}
    {"level":"warn","ts":"2022-08-06T09:44:27.438Z","caller":"etcdmain/etcd.go:446","msg":"found invalid file under data directory","filename":"member_id","data-dir":"/bitnami/etcd/data"}
    {"level":"info","ts":"2022-08-06T09:44:27.438Z","caller":"etcdmain/etcd.go:116","msg":"server has been already initialized","data-dir":"/bitnami/etcd/data","dir-type":"member"}
    {"level":"info","ts":"2022-08-06T09:44:27.439Z","caller":"embed/etcd.go:131","msg":"configuring peer listeners","listen-peer-urls":["http://localhost:2380"]}
    {"level":"info","ts":"2022-08-06T09:44:27.449Z","caller":"embed/etcd.go:368","msg":"closing etcd server","name":"default","data-dir":"/bitnami/etcd/data","advertise-peer-urls":["http://localhost:2380"],"advertise-client-urls":["http://etcd-server:2379"]}
    {"level":"info","ts":"2022-08-06T09:44:27.450Z","caller":"embed/etcd.go:370","msg":"closed etcd server","name":"default","data-dir":"/bitnami/etcd/data","advertise-peer-urls":["http://localhost:2380"],"advertise-client-urls":["http://etcd-server:2379"]}
    {"level":"fatal","ts":"2022-08-06T09:44:27.450Z","caller":"etcdmain/etcd.go:204","msg":"discovery failed","error":"listen tcp 127.0.0.1:2380: bind: address already in use","stacktrace":"go.etcd.io/etcd/server/v3/etcdmain.startEtcdOrProxyV2\n\t/go/src/go.etcd.io/etcd/release/etcd/server/etcdmain/etcd.go:204\ngo.etcd.io/etcd/server/v3/etcdmain.Main\n\t/go/src/go.etcd.io/etcd/release/etcd/server/etcdmain/main.go:40\nmain.main\n\t/go/src/go.etcd.io/etcd/release/etcd/server/main.go:32\nruntime.main\n\t/go/gos/go1.16.15/src/runtime/proc.go:225"}
    
    opened by dc7303 0
  • When I killed my java etcd program, I found that etcd would stop working and report the following error. What is the reason for this?

    When I killed my java etcd program, I found that etcd would stop working and report the following error. What is the reason for this?

    What happened?

    {"level":"warn","ts":"2022-08-05T14:20:13.984+0800","caller":"v3rpc/interceptor.go:197","msg":"request stats","start time":"2022-08-05T14:20:10.778+0800","time spent":"3.20534961s","remote":"10.3.71.106:49706","response type":"/v3lockpb.Lock/Lock","request count":-1,"request size":-1,"response count":-1,"response size":-1,"request content":""}}

    {"level":"fatal","ts":"2022-08-05T14:31:47.331+0800","caller":"backend/batch_tx.go:152","msg":"failed to find a bucket","bucket-name":"key","stack":"go.etcd.io/etcd/server/v3/mvcc/backend.(*batchTx).unsafePut\n\t/go/src/go.etcd.io/etcd/release/etcd/server/mvcc/backend/batch_tx.go:155\ngo.etcd.io/etcd/server/v3/mvcc/backend.(*batchTx).UnsafeSeqPut\n\t/go/src/go.etcd.io/etcd/release/etcd/server/mvcc/backend/batch_tx.go:146\ngo.etcd.io/etcd/server/v3/mvcc/backend.(*batchTxBuffered).UnsafeSeqPut\n\t/go/src/go.etcd.io/etcd/release/etcd/server/mvcc/backend/batch_tx.go:368\ngo.etcd.io/etcd/server/v3/mvcc.(*storeTxnWrite).delete\n\t/go/src/go.etcd.io/etcd/release/etcd/server/mvcc/kvstore_txn.go:279\ngo.etcd.io/etcd/server/v3/mvcc.(*storeTxnWrite).deleteRange\n\t/go/src/go.etcd.io/etcd/release/etcd/server/mvcc/kvstore_txn.go:257\ngo.etcd.io/etcd/server/v3/mvcc.(*storeTxnWrite).DeleteRange\n\t/go/src/go.etcd.io/etcd/release/etcd/server/mvcc/kvstore_txn.go:102\ngo.etcd.io/etcd/server/v3/mvcc.(*metricsTxnWrite).DeleteRange\n\t/go/src/go.etcd.io/etcd/release/etcd/server/mvcc/metrics_txn.go:46\ngo.etcd.io/etcd/server/v3/lease.(*lessor).Revoke\n\t/go/src...........

    What did you expect to happen?

    etcd cannot stop working when the jetcd client disconnects unexpectedly.

    How can we reproduce it (as minimally and precisely as possible)?

    Connect etcd through java etcd client api, then store key-value and read key-value in etcd, and manually kill the java etcd client during the running process. The java client I use is jetcd.

    Anything else we need to know?

    No response

    Etcd version (please run commands below)

    v3.5.4

    Etcd configuration (command line flags or environment variables)

    paste your configuration here

    Etcd debug information (please run commands blow, feel free to obfuscate the IP address or FQDN in the output)

    $ etcdctl member list -w table
    # paste output here
    
    $ etcdctl --endpoints=<member list> endpoint status -w table
    # paste output here
    

    Relevant log output

    No response

    opened by luomengY 7
  • [v3.5] Update OpenTelemetry to v1.0+

    [v3.5] Update OpenTelemetry to v1.0+

    Part of https://github.com/etcd-io/etcd/issues/12460.

    Given the release delays for v3.6, I'd like to propose updating the OpenTelemetry version used in etcd release-3.5 to v1.0+. A quick go get -u shows that it would also require updating github.com/stretchr/testify from v1.7.0 to v1.7.1. That would help unblock using 1.0+ in kubernetes, which would unblock users that have a dependency on the kubernetes client as well.

    cc @logicalhan @damemi @CatherineF-dev @dgrisonnet @serathius @sallyom

    opened by dashpole 2
  • etcd  log param to set error

    etcd log param to set error

    What happened?

    etcd --log-rotation-config-json={"maxsize": 100, "maxage": 7, "maxbackups": 7, "localtime": false, "compress": true} {"level":"info","ts":1659613158.4970117,"caller":"etcdmain/etcd.go:72","msg":"Running: ","args":["etcd","--log-rotation-config-json={maxsize:","100,","maxage:","7,","maxbackups:","7,","localtime:","false,","compress:","true}"]} {"level":"warn","ts":1659613158.4971104,"caller":"etcdmain/etcd.go:74","msg":"failed to verify flags","error":"'100,' is not a valid flag"}

    What did you expect to happen?

    success

    How can we reproduce it (as minimally and precisely as possible)?

    etcd --logger zap
    --log-level info
    --log-outputs /var/log/etcd/etcd.log
    --enable-log-rotation true
    --log-rotation-config-json {"maxsize": 100, "maxage": 7, "maxbackups": 7, "localtime": false, "compress": true}

    Anything else we need to know?

    No response

    Etcd version (please run commands below)

    exec etcd --name ${HOSTNAME}
    --initial-advertise-peer-urls http://${HOSTNAME}.${SET_NAME}.${MY_NAMESPACE}.svc.cluster.local:2380
    --listen-peer-urls http://${POD_IP}:2380
    --listen-client-urls http://${POD_IP}:2379,http://127.0.0.1:2379
    --advertise-client-urls http://${HOSTNAME}.${SET_NAME}.${MY_NAMESPACE}.svc.cluster.local:2379
    --initial-cluster-token etcd-cluster-1
    --data-dir /var/run/etcd/default.etcd
    --initial-cluster $(initial_peers)
    --initial-cluster-state new
    --auto-compaction-retention 1
    --max-request-bytes 10485760
    --quota-backend-bytes 10737418240
    --logger zap
    --log-level info
    --log-outputs /var/log/etcd/etcd.log
    --enable-log-rotation true
    --log-rotation-config-json {"maxsize": 100, "maxage": 7, "maxbackups": 7, "localtime": false, "compress": true}

    Etcd configuration (command line flags or environment variables)

    paste your configuration here

    Etcd debug information (please run commands blow, feel free to obfuscate the IP address or FQDN in the output)

    $ etcdctl member list -w table
    # paste output here
    
    $ etcdctl --endpoints=<member list> endpoint status -w table
    # paste output here
    

    Relevant log output

    No response

    area/bug 
    opened by songdechao 1
Releases(v3.4.20)
  • v3.4.20(Aug 5, 2022)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.20
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.20
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.20 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.20 \
      gcr.io/etcd-development/etcd:v3.4.20 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.20 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.20 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.20 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.20 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.20 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.20-darwin-amd64.zip(24.35 MB)
    etcd-v3.4.20-linux-amd64.tar.gz(14.49 MB)
    etcd-v3.4.20-linux-arm64.tar.gz(13.28 MB)
    etcd-v3.4.20-linux-ppc64le.tar.gz(12.92 MB)
    etcd-v3.4.20-windows-amd64.zip(14.83 MB)
    SHA256SUMS(489 bytes)
  • v3.4.19(Jul 12, 2022)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.19
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.19
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.19 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.19 \
      gcr.io/etcd-development/etcd:v3.4.19 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.19 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.19 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.19 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.19 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.19 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.19-darwin-amd64.zip(24.23 MB)
    etcd-v3.4.19-linux-amd64.tar.gz(14.42 MB)
    etcd-v3.4.19-linux-arm64.tar.gz(13.22 MB)
    etcd-v3.4.19-linux-ppc64le.tar.gz(12.86 MB)
    etcd-v3.4.19-windows-amd64.zip(14.76 MB)
    SHA256SUMS(489 bytes)
  • v3.5.4(Apr 24, 2022)

    Please see Announcing etcd 3.5 blog post.

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.4
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.4
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.4 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.4 \
      gcr.io/etcd-development/etcd:v3.5.4 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.4 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.4-darwin-amd64.zip(33.82 MB)
    etcd-v3.5.4-linux-amd64.tar.gz(18.53 MB)
    etcd-v3.5.4-linux-arm64.tar.gz(16.66 MB)
    etcd-v3.5.4-linux-ppc64le.tar.gz(16.06 MB)
    etcd-v3.5.4-linux-s390x.tar.gz(17.82 MB)
    etcd-v3.5.4-windows-amd64.zip(18.75 MB)
    SHA256SUMS(581 bytes)
  • v3.5.3(Apr 13, 2022)

    Highlights:

    • Version 3.5.3 is fixing critical correctness issues (https://github.com/etcd-io/etcd/issues/13766, https://github.com/etcd-io/etcd/issues/13514) introduced in the 3.5 branch that could lead to not applying a committed transaction across all replicas in case of a server crash.
    • It's likely 3.5.4 will be releases soon that reverts SRV change added to 3.5.3. Please see the discussion (https://github.com/etcd-io/etcd/issues/13948)

    Please see Announcing etcd 3.5 blog post.

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.3
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.3
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.3 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.3 \
      gcr.io/etcd-development/etcd:v3.5.3 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.3 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.3 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.3 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.3 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.3 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.3 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.3-darwin-amd64.zip(33.84 MB)
    etcd-v3.5.3-linux-amd64.tar.gz(18.54 MB)
    etcd-v3.5.3-linux-arm64.tar.gz(16.67 MB)
    etcd-v3.5.3-linux-ppc64le.tar.gz(16.08 MB)
    etcd-v3.5.3-linux-s390x.tar.gz(17.84 MB)
    etcd-v3.5.3-windows-amd64.zip(18.77 MB)
    SHA256SUMS(581 bytes)
  • v3.5.2(Feb 1, 2022)

    This release is no longer recommended for production. Please use v3.4 minor until v3.5.3 is released. Read more in https://github.com/etcd-io/etcd/tree/main/CHANGELOG.

    Please see Announcing etcd 3.5 blog post.

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.2
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.2
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.2 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.2 \
      gcr.io/etcd-development/etcd:v3.5.2 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.2 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.2 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.2 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.2 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.2 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.2 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.2-darwin-amd64.zip(33.80 MB)
    etcd-v3.5.2-linux-amd64.tar.gz(18.50 MB)
    etcd-v3.5.2-linux-arm64.tar.gz(16.63 MB)
    etcd-v3.5.2-linux-ppc64le.tar.gz(16.03 MB)
    etcd-v3.5.2-linux-s390x.tar.gz(17.79 MB)
    etcd-v3.5.2-windows-amd64.zip(18.72 MB)
    SHA256SUMS(581 bytes)
  • v3.5.1(Oct 15, 2021)

    This release is no longer recommended for production. Please use v3.4 minor until v3.5.3 is released. Read more in https://github.com/etcd-io/etcd/tree/main/CHANGELOG.

    Please see Announcing etcd 3.5 blog post.

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.1
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.1
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    

    ####### Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.1 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.1 \
      gcr.io/etcd-development/etcd:v3.5.1 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.1 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.1-darwin-amd64.zip(33.79 MB)
    etcd-v3.5.1-linux-amd64.tar.gz(18.50 MB)
    etcd-v3.5.1-linux-arm64.tar.gz(16.62 MB)
    etcd-v3.5.1-linux-ppc64le.tar.gz(16.03 MB)
    etcd-v3.5.1-linux-s390x.tar.gz(17.79 MB)
    etcd-v3.5.1-windows-amd64.zip(18.72 MB)
    SHA256SUMS(581 bytes)
  • v3.4.18(Oct 15, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.18
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.18
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.18 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.18 \
      gcr.io/etcd-development/etcd:v3.4.18 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.18 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.18 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.18 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.18 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.18 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.18-darwin-amd64.zip(26.86 MB)
    etcd-v3.4.18-linux-amd64.tar.gz(16.60 MB)
    etcd-v3.4.18-linux-arm64.tar.gz(15.39 MB)
    etcd-v3.4.18-linux-ppc64le.tar.gz(15.20 MB)
    etcd-v3.4.18-windows-amd64.zip(16.57 MB)
    SHA256SUMS(489 bytes)
  • v3.3.27(Oct 15, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.3.27
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.3.27
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.3.27 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.3.27 \
      gcr.io/etcd-development/etcd:v3.3.27 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.3.27 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.3.27 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.3.27 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.3.27 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.3.27 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.3.27-darwin-amd64.zip(23.50 MB)
    etcd-v3.3.27-linux-amd64.tar.gz(13.61 MB)
    etcd-v3.3.27-linux-arm64.tar.gz(12.49 MB)
    etcd-v3.3.27-linux-ppc64le.tar.gz(12.29 MB)
    etcd-v3.3.27-windows-amd64.zip(13.55 MB)
    SHA256SUMS(489 bytes)
  • v3.4.17(Oct 4, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.17
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.17
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.17 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.17 \
      gcr.io/etcd-development/etcd:v3.4.17 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.17 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.17 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.17 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.17 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.17 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.17-darwin-amd64.zip(26.86 MB)
    etcd-v3.4.17-linux-amd64.tar.gz(16.60 MB)
    etcd-v3.4.17-linux-arm64.tar.gz(15.39 MB)
    etcd-v3.4.17-linux-ppc64le.tar.gz(15.20 MB)
    etcd-v3.4.17-windows-amd64.zip(16.58 MB)
    SHA256SUMS(489 bytes)
  • v3.3.26(Oct 4, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.3.26
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.3.26
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.3.26 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.3.26 \
      gcr.io/etcd-development/etcd:v3.3.26 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.3.26 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.3.26 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.3.26 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.3.26 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.3.26 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.3.26-darwin-amd64.zip(23.50 MB)
    etcd-v3.3.26-linux-amd64.tar.gz(13.61 MB)
    etcd-v3.3.26-linux-arm64.tar.gz(12.49 MB)
    etcd-v3.3.26-linux-ppc64le.tar.gz(12.29 MB)
    etcd-v3.3.26-windows-amd64.zip(13.55 MB)
    SHA256SUMS(489 bytes)
  • v3.5.0(Jun 15, 2021)

    This release is no longer recommended for production. Please use v3.4 minor until v3.5.3 is released. Read more in https://github.com/etcd-io/etcd/tree/main/CHANGELOG.

    Please see Announcing etcd 3.5 blog post.

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.0
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.0
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    

    ####### Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.0 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.0 \
      gcr.io/etcd-development/etcd:v3.5.0 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.0 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.0 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.0 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.0 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.0 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.0 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.0-darwin-amd64.zip(33.77 MB)
    etcd-v3.5.0-linux-amd64.tar.gz(18.49 MB)
    etcd-v3.5.0-linux-arm64.tar.gz(16.61 MB)
    etcd-v3.5.0-linux-ppc64le.tar.gz(16.02 MB)
    etcd-v3.5.0-linux-s390x.tar.gz(17.78 MB)
    etcd-v3.5.0-windows-amd64.zip(18.71 MB)
    SHA256SUMS(581 bytes)
  • v3.5.0-rc.1(Jun 9, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.0-rc.1
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.0-rc.1
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.0-rc.1 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.0-rc.1 \
      gcr.io/etcd-development/etcd:v3.5.0-rc.1 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.0-rc.1 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.0-rc.1 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.0-rc.1 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.0-rc.1 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.0-rc.1 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.0-rc.1 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.0-rc.1-darwin-amd64.zip(33.77 MB)
    etcd-v3.5.0-rc.1-linux-amd64.tar.gz(18.49 MB)
    etcd-v3.5.0-rc.1-linux-arm64.tar.gz(16.61 MB)
    etcd-v3.5.0-rc.1-linux-ppc64le.tar.gz(16.02 MB)
    etcd-v3.5.0-rc.1-linux-s390x.tar.gz(17.78 MB)
    etcd-v3.5.0-rc.1-windows-amd64.zip(18.71 MB)
    SHA256SUMS(611 bytes)
  • v3.5.0-rc.0(Jun 4, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.0-rc.0
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.0-rc.0
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.0-rc.0 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.0-rc.0 \
      gcr.io/etcd-development/etcd:v3.5.0-rc.0 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.0-rc.0 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.0-rc.0 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.0-rc.0 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.0-rc.0 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.0-rc.0 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.0-rc.0 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.0-rc.0-darwin-amd64.zip(33.77 MB)
    etcd-v3.5.0-rc.0-linux-amd64.tar.gz(18.48 MB)
    etcd-v3.5.0-rc.0-linux-arm64.tar.gz(16.61 MB)
    etcd-v3.5.0-rc.0-linux-ppc64le.tar.gz(16.02 MB)
    etcd-v3.5.0-rc.0-linux-s390x.tar.gz(17.78 MB)
    etcd-v3.5.0-rc.0-windows-amd64.zip(18.71 MB)
    SHA256SUMS(611 bytes)
  • v3.5.0-beta.4(May 26, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.0-beta.4
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.0-beta.4
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.0-beta.4 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.0-beta.4 \
      gcr.io/etcd-development/etcd:v3.5.0-beta.4 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.0-beta.4 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.0-beta.4 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.0-beta.4 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.0-beta.4 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.0-beta.4 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.0-beta.4 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.0-beta.4-darwin-amd64.zip(33.76 MB)
    etcd-v3.5.0-beta.4-linux-amd64.tar.gz(18.47 MB)
    etcd-v3.5.0-beta.4-linux-arm64.tar.gz(16.60 MB)
    etcd-v3.5.0-beta.4-linux-ppc64le.tar.gz(16.01 MB)
    etcd-v3.5.0-beta.4-linux-s390x.tar.gz(17.78 MB)
    etcd-v3.5.0-beta.4-windows-amd64.zip(18.70 MB)
    SHA256SUMS(623 bytes)
  • v3.5.0-beta.3(May 18, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.0-beta.3
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.0-beta.3
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.0-beta.3 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.0-beta.3 \
      gcr.io/etcd-development/etcd:v3.5.0-beta.3 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.0-beta.3 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.0-beta.3 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.0-beta.3 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.0-beta.3 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.0-beta.3 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.0-beta.3 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.0-beta.3-darwin-amd64.zip(33.74 MB)
    etcd-v3.5.0-beta.3-linux-amd64.tar.gz(18.47 MB)
    etcd-v3.5.0-beta.3-linux-arm64.tar.gz(16.60 MB)
    etcd-v3.5.0-beta.3-linux-ppc64le.tar.gz(16.01 MB)
    etcd-v3.5.0-beta.3-linux-s390x.tar.gz(17.77 MB)
    etcd-v3.5.0-beta.3-windows-amd64.zip(18.69 MB)
    SHA256SUMS(623 bytes)
  • v3.5.0-beta.1(May 18, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.5.0-beta.1
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.5.0-beta.1
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    /tmp/etcd-download-test/etcdutl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.5.0-beta.1 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.5.0-beta.1 \
      gcr.io/etcd-development/etcd:v3.5.0-beta.1 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.5.0-beta.1 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.5.0-beta.1 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.5.0-beta.1 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.5.0-beta.1 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.5.0-beta.1 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    docker exec etcd-gcr-v3.5.0-beta.1 /bin/sh -c "/usr/local/bin/etcdutl version"
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.0-beta.1-darwin-amd64.zip(33.75 MB)
    etcd-v3.5.0-beta.1-linux-amd64.tar.gz(18.47 MB)
    etcd-v3.5.0-beta.1-linux-arm64.tar.gz(16.60 MB)
    etcd-v3.5.0-beta.1-linux-ppc64le.tar.gz(16.01 MB)
    etcd-v3.5.0-beta.1-linux-s390x.tar.gz(17.77 MB)
    etcd-v3.5.0-beta.1-windows-amd64.zip(18.69 MB)
    SHA256SUMS(623 bytes)
  • v3.4.16(May 12, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.16
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.16
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.16 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.16 \
      gcr.io/etcd-development/etcd:v3.4.16 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.16 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.16 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.16 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.16 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.16 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.16-darwin-amd64.zip(26.85 MB)
    etcd-v3.4.16-linux-amd64.tar.gz(16.60 MB)
    etcd-v3.4.16-linux-arm64.tar.gz(15.39 MB)
    etcd-v3.4.16-linux-ppc64le.tar.gz(15.19 MB)
    etcd-v3.4.16-windows-amd64.zip(16.57 MB)
    SHA256SUMS(489 bytes)
  • v3.2.32(Mar 28, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.2.32
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GITHUB_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.2.32
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.2.32 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.2.32 \
      gcr.io/etcd-development/etcd:v3.2.32 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new
    
    docker exec etcd-gcr-v3.2.32 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.2.32 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.2.32 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.2.32 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.2.32 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.2.32-darwin-amd64.zip(22.63 MB)
    etcd-v3.2.32-linux-amd64.tar.gz(12.92 MB)
    etcd-v3.2.32-linux-arm64.tar.gz(11.84 MB)
    etcd-v3.2.32-linux-ppc64le.tar.gz(11.68 MB)
    etcd-v3.2.32-windows-amd64.zip(12.86 MB)
    SHA256SUMS(489 bytes)
  • v3.4.15(Feb 26, 2021)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Note

    Initially the tarballs were pushed without *.tar.gz artifacts (see https://github.com/etcd-io/etcd/issues/12734#issuecomment-804006322). The new version of gziped artifacts were added on 2021-03-22, but (most-likely) due to different gzip version, the SHA256 checksum changed. The original SHA256SUMS was renamed to SHA256SUMS.old and the new version of SHA256SUMS file was pushed.

    Linux
    ETCD_VER=v3.4.15
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.15
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.15 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.15 \
      gcr.io/etcd-development/etcd:v3.4.15 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.15 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.15 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.15 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.15 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.15 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.15-darwin-amd64.zip(26.84 MB)
    etcd-v3.4.15-linux-amd64.tar(44.74 MB)
    etcd-v3.4.15-linux-amd64.tar.gz(16.59 MB)
    etcd-v3.4.15-linux-arm64.tar(43.03 MB)
    etcd-v3.4.15-linux-arm64.tar.gz(15.38 MB)
    etcd-v3.4.15-linux-ppc64le.tar(43.73 MB)
    etcd-v3.4.15-linux-ppc64le.tar.gz(15.19 MB)
    etcd-v3.4.15-windows-amd64.zip(16.56 MB)
    SHA256SUMS(487 bytes)
    SHA256SUMS.old(489 bytes)
  • v3.5.0-alpha.0(Feb 25, 2021)

    v3.5.0-alpha.0 is an experimental release in order to:

    • test the "modularized" release process
    • enable integration testing with the modularized code of 3.5.x.

    See https://github.com/etcd-io/etcd/issues/12498 for more context.

    Source code(tar.gz)
    Source code(zip)
    etcd-v3.5.0-alpha.0-darwin-amd64.zip(22.97 MB)
    etcd-v3.5.0-alpha.0-linux-amd64.tar.gz(12.57 MB)
    etcd-v3.5.0-alpha.0-linux-arm64.tar.gz(11.33 MB)
    etcd-v3.5.0-alpha.0-linux-ppc64le.tar.gz(10.99 MB)
    etcd-v3.5.0-alpha.0-linux-s390x.tar.gz(12.14 MB)
    etcd-v3.5.0-alpha.0-windows-amd64.zip(12.63 MB)
  • v3.4.14(Nov 25, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.14
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.14
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.14 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.14 \
      gcr.io/etcd-development/etcd:v3.4.14 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.14 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.14 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.14 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.14 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.14 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.14-darwin-amd64.zip(26.80 MB)
    etcd-v3.4.14-linux-amd64.tar.gz(16.56 MB)
    etcd-v3.4.14-linux-arm64.tar.gz(15.36 MB)
    etcd-v3.4.14-linux-ppc64le.tar.gz(15.16 MB)
    etcd-v3.4.14-windows-amd64.zip(16.54 MB)
    SHA256SUMS(489 bytes)
  • v3.4.13(Aug 24, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.13
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.13
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.13 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.13 \
      gcr.io/etcd-development/etcd:v3.4.13 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.13 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.13 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.13 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.13 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.13 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.13-darwin-amd64.zip(26.80 MB)
    etcd-v3.4.13-linux-amd64.tar.gz(16.56 MB)
    etcd-v3.4.13-linux-arm64.tar.gz(15.36 MB)
    etcd-v3.4.13-linux-ppc64le.tar.gz(15.16 MB)
    etcd-v3.4.13-windows-amd64.zip(16.54 MB)
    SHA256SUMS(489 bytes)
  • v3.3.25(Aug 24, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.3.25
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.3.25
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.3.25 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.3.25 \
      gcr.io/etcd-development/etcd:v3.3.25 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.3.25 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.3.25 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.3.25 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.3.25 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.3.25 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.3.25-darwin-amd64.zip(23.49 MB)
    etcd-v3.3.25-linux-amd64.tar.gz(13.60 MB)
    etcd-v3.3.25-linux-arm64.tar.gz(12.48 MB)
    etcd-v3.3.25-linux-ppc64le.tar.gz(12.29 MB)
    etcd-v3.3.25-windows-amd64.zip(13.55 MB)
    SHA256SUMS(489 bytes)
  • v3.4.12(Aug 19, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.12
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.12
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.12 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.12 \
      gcr.io/etcd-development/etcd:v3.4.12 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.12 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.12 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.12 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.12 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.12 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.12-darwin-amd64.zip(26.80 MB)
    etcd-v3.4.12-linux-amd64.tar.gz(16.56 MB)
    etcd-v3.4.12-linux-arm64.tar.gz(15.36 MB)
    etcd-v3.4.12-linux-ppc64le.tar.gz(15.16 MB)
    etcd-v3.4.12-windows-amd64.zip(16.54 MB)
    SHA256SUMS(489 bytes)
  • v3.4.11(Aug 18, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.11
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.11
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.11 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.11 \
      gcr.io/etcd-development/etcd:v3.4.11 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.11 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.11 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.11 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.11 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.11 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.11-darwin-amd64.zip(26.80 MB)
    etcd-v3.4.11-linux-amd64.tar.gz(16.56 MB)
    etcd-v3.4.11-linux-arm64.tar.gz(15.36 MB)
    etcd-v3.4.11-linux-ppc64le.tar.gz(15.16 MB)
    etcd-v3.4.11-windows-amd64.zip(16.53 MB)
    SHA256SUMS(489 bytes)
  • v3.3.24(Aug 18, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.3.24
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.3.24
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.3.24 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.3.24 \
      gcr.io/etcd-development/etcd:v3.3.24 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new
    
    docker exec etcd-gcr-v3.3.24 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.3.24 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.3.24 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.3.24 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.3.24 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.3.24-darwin-amd64.zip(23.84 MB)
    etcd-v3.3.24-linux-amd64.tar.gz(13.83 MB)
    etcd-v3.3.24-linux-arm64.tar.gz(12.68 MB)
    etcd-v3.3.24-linux-ppc64le.tar.gz(12.49 MB)
    etcd-v3.3.24-windows-amd64.zip(13.75 MB)
    SHA256SUMS(489 bytes)
  • v3.2.31(Aug 18, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.2.31
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GITHUB_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.2.31
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.2.31 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.2.31 \
      gcr.io/etcd-development/etcd:v3.2.31 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new
    
    docker exec etcd-gcr-v3.2.31 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.2.31 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.2.31 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.2.31 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.2.31 /bin/sh -c "ETCDCTL_API=3 /usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.2.31-darwin-amd64.zip(22.63 MB)
    etcd-v3.2.31-linux-amd64.tar.gz(12.92 MB)
    etcd-v3.2.31-linux-arm64.tar.gz(11.84 MB)
    etcd-v3.2.31-linux-ppc64le.tar.gz(11.68 MB)
    etcd-v3.2.31-windows-amd64.zip(12.86 MB)
    SHA256SUMS(489 bytes)
  • v3.4.10(Jul 16, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.4.10
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.4.10
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p -m700 /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.4.10 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.4.10 \
      gcr.io/etcd-development/etcd:v3.4.10 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.4.10 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.4.10 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.4.10 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.4.10 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.4.10 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.4.10-darwin-amd64.zip(26.80 MB)
    etcd-v3.4.10-linux-amd64.tar.gz(16.56 MB)
    etcd-v3.4.10-linux-arm64.tar.gz(15.35 MB)
    etcd-v3.4.10-linux-ppc64le.tar.gz(15.16 MB)
    etcd-v3.4.10-windows-amd64.zip(16.53 MB)
    SHA256SUMS(489 bytes)
  • v3.3.23(Jul 16, 2020)

    Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).

    For installation guides, please check out play.etcd.io and operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.

    Linux
    ETCD_VER=v3.3.23
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
    rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    # start a local etcd server
    /tmp/etcd-download-test/etcd
    
    # write,read to etcd
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
    
    macOS (Darwin)
    ETCD_VER=v3.3.23
    
    # choose either URL
    GOOGLE_URL=https://storage.googleapis.com/etcd
    GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
    DOWNLOAD_URL=${GOOGLE_URL}
    
    rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
    
    curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
    mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
    
    /tmp/etcd-download-test/etcd --version
    ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
    
    Docker

    etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.

    rm -rf /tmp/etcd-data.tmp && mkdir -p -m700 /tmp/etcd-data.tmp && \
      docker rmi gcr.io/etcd-development/etcd:v3.3.23 || true && \
      docker run \
      -p 2379:2379 \
      -p 2380:2380 \
      --mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
      --name etcd-gcr-v3.3.23 \
      gcr.io/etcd-development/etcd:v3.3.23 \
      /usr/local/bin/etcd \
      --name s1 \
      --data-dir /etcd-data \
      --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 \
      --initial-advertise-peer-urls http://0.0.0.0:2380 \
      --initial-cluster s1=http://0.0.0.0:2380 \
      --initial-cluster-token tkn \
      --initial-cluster-state new \
      --log-level info \
      --logger zap \
      --log-outputs stderr
    
    docker exec etcd-gcr-v3.3.23 /bin/sh -c "/usr/local/bin/etcd --version"
    docker exec etcd-gcr-v3.3.23 /bin/sh -c "/usr/local/bin/etcdctl version"
    docker exec etcd-gcr-v3.3.23 /bin/sh -c "/usr/local/bin/etcdctl endpoint health"
    docker exec etcd-gcr-v3.3.23 /bin/sh -c "/usr/local/bin/etcdctl put foo bar"
    docker exec etcd-gcr-v3.3.23 /bin/sh -c "/usr/local/bin/etcdctl get foo"
    
    Source code(tar.gz)
    Source code(zip)
    etcd-v3.3.23-darwin-amd64.zip(24.81 MB)
    etcd-v3.3.23-linux-amd64.tar.gz(14.36 MB)
    etcd-v3.3.23-linux-arm64.tar.gz(13.17 MB)
    etcd-v3.3.23-linux-ppc64le.tar.gz(12.96 MB)
    etcd-v3.3.23-windows-amd64.zip(14.31 MB)
    SHA256SUMS(489 bytes)
Owner
etcd-io
etcd Development and Communities
etcd-io
Distributed cache and in-memory key/value data store. It can be used both as an embedded Go library and as a language-independent service.

Olric Distributed cache and in-memory key/value data store. It can be used both as an embedded Go library and as a language-independent service. With

Burak Sezer 2.3k Aug 1, 2022
GhostDB is a distributed, in-memory, general purpose key-value data store that delivers microsecond performance at any scale.

GhostDB is designed to speed up dynamic database or API driven websites by storing data in RAM in order to reduce the number of times an external data source such as a database or API must be read. GhostDB provides a very large hash table that is distributed across multiple machines and stores large numbers of key-value pairs within the hash table.

Jake Grogan 724 Jul 28, 2022
Distributed key-value store

Keva Distributed key-value store General Demo Start the server docker-compose up --build Insert data curl -XPOST http://localhost:5555/storage/test1

Yaroslav Gaponov 0 Nov 15, 2021
Implementation of distributed key-value system based on TiKV

Distributed_key-value_system A naive implementation of distributed key-value system based on TiKV Features Features of this work are listed below: Dis

null 2 Mar 7, 2022
A disk-backed key-value store.

What is diskv? Diskv (disk-vee) is a simple, persistent key-value store written in the Go language. It starts with an incredibly simple API for storin

Peter Bourgon 1.2k Aug 8, 2022
a persistent real-time key-value store, with the same redis protocol with powerful features

a fast NoSQL DB, that uses the same RESP protocol and capable to store terabytes of data, also it integrates with your mobile/web apps to add real-time features, soon you can use it as a document store cause it should become a multi-model db. Redix is used in production, you can use it in your apps with no worries.

Mohammed Al Ashaal 1.1k Jul 29, 2022
Pogreb is an embedded key-value store for read-heavy workloads written in Go.

Embedded key-value store for read-heavy workloads written in Go

Artem Krylysov 914 Aug 2, 2022
CrankDB is an ultra fast and very lightweight Key Value based Document Store.

CrankDB is a ultra fast, extreme lightweight Key Value based Document Store.

Shrey Batra 30 Apr 12, 2022
yakv is a simple, in-memory, concurrency-safe key-value store for hobbyists.

yakv (yak-v. (originally intended to be "yet-another-key-value store")) is a simple, in-memory, concurrency-safe key-value store for hobbyists. yakv provides persistence by appending transactions to a transaction log and restoring data from the transaction log on startup.

Aadhav Vignesh 5 Feb 24, 2022
Multithreaded key value pair store using thread safe locking mechanism allowing concurrent reads

Project Amnesia A Multi-threaded key-value pair store using thread safe locking mechanism allowing concurrent reads. Curious to Try it out?? Check out

Nikhil Nayak 6 Apr 7, 2022
ShockV is a simple key-value store with RESTful API

ShockV is a simple key-value store based on badgerDB with RESTful API. It's best suited for experimental project which you need a lightweight data store.

delihiros 2 Sep 26, 2021
A rest-api that works with golang as an in-memory key value store

In Store A rest-api that works with golang as an in-memory key value store Usage Fist of all, clone the repo with the command below. You must have gol

Eyüp Arslan 0 Oct 24, 2021
Simple in memory key-value store.

Simple in memory key-value store. Development This project is written in Go. Make sure you have Go installed (download). Version 1.17 or higher is req

Mustafa Navruz 0 Nov 6, 2021
A simple in-memory key-value store application

vtec vtec, is a simple in-memory key-value store application. vtec provides persistence by appending transactions to a json file and restoring data fr

Ahmet Tek 3 Jun 22, 2022
Biscuit is a multi-region HA key-value store for your AWS infrastructure secrets.

Biscuit Biscuit is a simple key-value store for your infrastructure secrets. Is Biscuit right for me? Biscuit is most useful to teams already using AW

Doug 559 Jul 27, 2022
An in-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications.

go-cache go-cache is an in-memory key:value store/cache similar to memcached that is suitable for applications running on a single machine. Its major

Patrick Mylund Nielsen 6.4k Aug 6, 2022
NutsDB a simple, fast, embeddable and persistent key/value store written in pure Go.

A simple, fast, embeddable, persistent key/value store written in pure Go. It supports fully serializable transactions and many data structures such as list, set, sorted set.

徐佳军 2.3k Aug 6, 2022
KV - a toy in-memory key value store built primarily in an effort to write more go and check out grpc

KV KV is a toy in-memory key value store built primarily in an effort to write more go and check out grpc. This is still a work in progress. // downlo

Ali Mir 0 Dec 30, 2021
PrimeKV is a Secure, REST API driven Key/Value store.

PrimeKV PrimeKV is a Secure, REST API driven Key/Value store. Features 100% In-memory. Encrypted by default, All stored values are bi-directionally en

Josh Burns 0 Jan 10, 2022