etcd可通過客戶端命令行工具 etcdctl 對etcd進行請求操作,本文基於etcd v3 API,簡單介紹etcd的命令行基本操作。注意,若已經開啟了鑒權功能,以下所有命令都需要使用選項 --user 帶上用戶名和密碼。
1. 寫key

2. 讀key
(1)讀取一個key
可使用選項 --print-value-only 只打印值。

(2)讀取一個范圍內的key
半開區間:左閉右開

(3)讀取某個前綴的key
可以使用選項 --limit 限制返回的key數量。

(4)按key的字典順序讀取
讀取字典序大於或等於 name3 的key:

(5)讀取老版本的key

3. 刪key
可以通過選項 --prev-kv 讓命令返回對應的值。

返回的數字表示刪除的key數量。
與讀取key類似,刪除key也支持刪除一個范圍內的key、刪除某個前綴的key、按key的字段順序刪除key,具體命令參照讀取key的命令。
4. 租約
租約是etcd v3 API的新特性,租約是有過期時間的,一個租約可綁定多個key,所以當多個key需要相同的過期時間時,將一個租約綁定多個key,即可通過控制一個租約的過期時間來控制多個key的過期時間。
(1)授予租約,綁定key

20秒后該key即過期。
(2)撤銷租約

(4)獲取租約信息
查看租約的過期時間,以及綁定的所有key:

5. watch
在某個etcd節點通過watch機制監聽key的變化,在其他節點對這個key進行put或delete操作:

與讀取key類似,watch也支持watch一個范圍內的key、watch某個前綴的key、從某個key的歷史版本開始watch,具體命令參照讀取key的命令。
6. 查看etcd數據版本號
etcd可通過讀取一個key來獲取當前etcd服務端的版本號,不管key是否存在:

返回結果字段解析:
cluster_id:請求的etcd集群ID。
member_id:請求的etcd節點ID。
revision:etcd服務端當前全局數據版本號。對任一key的put或delete操作都會使revision自增1。revision=1是etcd的保留版本號,因此用戶的key版本號將從2開始。
raft_term:etcd當前raft主節點任期號。
create_revision:當前key創建時全局數據版本號revision的值。
mod_revision:當前key最后一次修改時全局數據版本號revision的值。
version:當前key的數據版本號。key創建時version為1,對當前key進行put操作會使version自增1,將key刪除后,重新創建,version又會從1開始計數。
etcd客戶端命令行工具 etcdctl 默認訪問 localhost:2379,可以通過選項 --endpoints 指定請求etcd server的地址:

可以看到,返回結果中 member_id 是不同的,因為請求了不同的etcd節點。
以上介紹的是etcd常用的基本操作,除此之外,還有更多命令行操作,例如:角色、用戶、權限、集群成員修改...