Today we are releasing etcd 2.2. This new release focuses on improving the tooling and developer experience. This release introduces an experimental demo of the next-generation v3 API, a new Go etcd client, and active cluster connectivity checking.
etcd is an open source, distributed, consistent key-value store for shared configuration, service discovery and scheduler coordination. etcd is a core component of the CoreOS software stack and is used to facilitate safe automatic updates in CoreOS Linux. It is the primary scheduling and service discovery data store in Kubernetes and is leveraged by hundreds of other tools and projects.
If you want to skip the talk and get right to the code, you can find new binaries on GitHub.
Zero-downtime rolling upgrade from 2.1
Upgrading from etcd 2.1 to etcd 2.2 is a zero-downtime rolling upgrade. You can update a cluster's nodes, one-by-one, from etcd 2.1 to etcd 2.2. For more details, please read the upgrade documentation. If you are running your cluster under etcd 0.4.x, please follow the snapshot migration documentation to upgrade your cluster.
Also, with this release, etcd 2.2 is now the current stable etcd release. As such, all bug fixes will go into new etcd 2.2.x releases and won't be backported to etcd 2.1.x.
New etcd client
Today we added a new Go etcd client binding to replace the old go-etcd client. The new client provides a clean set of APIs and improves the functionality around request cancellation and error reporting. We encourage you to try it out for new projects and provide feedback on the API via the etcd-dev mailing list. In this release, etcdctl also uses this new client, which will improve its reliability.
Experimental v3 API and new storage demo
We recently proposed a new version of the etcd API that is focused on providing improved features to the key-value store including: range reads, multi-key transactions, binary keys/values and a longer, more reliable key change history.
This new API also provides an efficient, reliable and scalable way to access the new disk storage backend. The new disk storage backend allows etcd to do incremental snapshots and decreases the memory pressure of large datasets while retaining hot data in-memory for fast access. The new storage backend, combined with the v3 API, will provide even better performance and stability than today’s in-memory store, which supports the v2 API.
etcd 2.2 supports a subset of the v3 API for testing and demo purposes. Note that this early preview is a non-clustered version and should not be used in production. You can enable it by setting the
--experimental-v3demo flag, then build and use the
etcdctlv3 tool in the etcd repo to interact with it.
We plan to support an experimental clustered version of the v3 API in the next etcd minor release, etcd v2.3.0, which is currently targeted for release in the next couple of months.
Active cluster health checking
In previous releases of etcd, the leader of the cluster was solely responsible for monitoring the health of other members. With this new release, all members of an etcd cluster now regularly check for connectivity and timing differences to other members to ensure cluster-wide health. To ease debugging potential issues, etcd now reports members that are observed as unhealthy every 30 seconds in the logs. This new feature also helps users explore and understand the stability of their cluster. For instance, it has the ability to expose clock sync issues and potential issues that might be caused by partial network partitions between members.
Based on feedback from the community, we've made a number of improvements to the readability and understandability of our documentation. Moreover, we added important new documents:
- Design of runtime reconfiguration
- Design of discovery service and its protocol
- How to report a bug to etcd
Get involved with etcd
We thank the community for helping to make etcd a strong and fundamental building block for running Google-like infrastructure. As we continue to invest in etcd and build requested features, we also welcome your contributions!