v2 http api https://coreos.com/etcd/docs/latest/v2/api.html
etcd compaction https://github.com/coreos/etcd/blob/master/Documentation/op-guide/maintenance.md#space-quota
The followings are v3 apis
export ETCDCTL_API=3
$ etcdctl put foo bar # revision = 2
$ etcdctl put foo1 bar1 # revision = 3
$ etcdctl put foo bar_new # revision = 4
$ etcdctl put foo1 bar1_new # revision = 5
$ etcdctl get foo foo9 # 访问 key 的最新版本
foo
bar_new
foo1
bar1_new
$ etcdctl get --rev=4 foo foo9 # 访问 key 的修订版本4
foo
bar_new
foo1
bar1
$ etcdctl get --rev=3 foo foo9 # 访问 key 的修订版本3
foo
bar
foo1
bar1
$ etcdctl get --rev=2 foo foo9 # 访问 key 的修订版本2
foo
bar
$ etcdctl get --rev=1 foo foo9 # 访问 key 的修订版本1
etcdctl put foo bar # revision = 2
etcdctl put foo1 bar1 # revision = 3
etcdctl put foo bar_new # revision = 4
etcdctl put foo1 bar1_new # revision = 5
# 从修订版本 2 开始观察key `foo` 的改动
$ etcdctl watch --rev=2 foo
PUT
foo
bar
PUT
foo
bar_new
# 从修订版本 3 开始观察key `foo` 的改动
$ etcdctl watch --rev=3 foo
PUT
foo
bar_new
$ etcdctl compact 5
compacted revision 5
# 在压缩修订版本之前的任何修订版本都不可访问
$ etcdctl get --rev=4 foo
Error: rpc error: code = 11 desc = etcdserver: mvcc: required revision has been compacted
应用可以为 etcd 集群里面的 key 授予租约。当 key 被附加到租约时,它的生存时间被绑定到租约的生存时间,而租约的生存时间相应的被 time-to-live (TTL)管理。 租约的实际 TTL 值是不低于最小 TTL,由 etcd 集群选择。一旦租约的 TTL 到期,租约就过期并且所有附带的 key 都将被删除。 lease是etcd v3为了解决多个key使用相同的TTL而定义的新对象
# 授予租约,TTL为10秒
$ etcdctl lease grant 10
lease 32695410dcc0ca06 granted with TTL(10s)
# 附加key foo到租约32695410dcc0ca06
$ etcdctl put --lease=32695410dcc0ca06 foo bar
OK
这是撤销同一个租约的命令:
$ etcdctl lease revoke 32695410dcc0ca06
lease 32695410dcc0ca06 revoked
$ etcdctl get foo
# 空应答,因为租约撤销导致foo被删除
这是维持同一个租约的命令:
$ etcdctl lease keep-alive 32695410dcc0ca0
lease 32695410dcc0ca0 keepalived with TTL(100)
lease 32695410dcc0ca0 keepalived with TTL(100)
lease 32695410dcc0ca0 keepalived with TTL(100)
...
注: 上面的这个命令中,etcdctl 不是单次续约,而是 etcdctl 会一直不断的发送请求来维持这个租约。
etcdctl --endpoints=http://10.151.139.99:4001 get /sh_idc_windyliucluster/pods/windyliu1/ianlang-nat-99
https
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/certs/kube-apiserver-etcd-ca.crt --cert=/etc/kubernetes/certs/kube-apiserver-etcd-client.crt --key=/etc/kubernetes/certs/kube-apiserver-etcd-client.key --endpoints=https://10.0.0.1:2379,https://10.0.0.2:2379,https://10.0.0.3:2379 --write-out=table endpoint status
delete recursively
./etcdctl --endpoints=http://etcd1:2379,http://etcd2:2379,http://etcd3:2379 del /cls-aw0czlx9 --prefix