etcdctl Commands
$ apt install etcd-client
$ etcdctl get "" --prefix --keys-only
$ etcdctl member list --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/peer.crt --key /etc/kubernetes/pki/etcd/peer.key
$ etcdctl get /registry/secrets/default/secret-name | hexdump -C
$ etcdctl endpoint status --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/healthcheck-client.crt --key /etc/kubernetes/pki/etcd/healthcheck-client.key --write-out=table --endpoints=10.200.0.2:2379,10.200.0.3:2379,10.200.0.4:2379
$ etcdctl del "" --prefix
Use cases
- used in K8s behind the api servers.
- used by Cilium as the kvstore; cilium agents will connect to etcd; since Cilium 1.6 it can use a new CRD-based backend for security identities instead of using a kvstore.
Under the hood
- written in Go.
- using the Raft consensus algorithm.
- the client does not need to know what
etcd
node is the leader (i.e. kube-apiserver
only talks to the etcd
on the same node):
etcd
internally forwards all requests that needs consensus (e.g. writes) to the leader.
- Requests that do not require consensus (e.g. serialized reads) can be processed by any cluster member.
Note
kubeadm reset
will not delete any etcd
data if external etcd
is used. This means that if you run kubeadm init
again using the same etcd
endpoints, you will see state from previous clusters.