How does etcd compare to zookeeper? What made etcd the choice for kubernetes and cncf?
A few reasons we didn't use ZK at the time (some of these are out of date). Zookeeper had:
- No TLS security story
- An abandoned RPC/serialization system that was hard to use in other languages
- A consensus algorithm that differed from systems described in literature
- A large RAM footprint
Awhile ago some etcd engineers made an experiment in fact to try and run ZK client protocol on etcd with a proxy:
https://github.com/etcd-io/zetcd https://coreos.com/blog/introducing-zetcd
Today, etcd performs much better than ZK and I believe it is much more widely deployed with a wider set of engaged users.