原文地址:etcdctletcdctl是etcd的命令行客户端。
默认情况下,master分支上使用v3 API。 对于v2 API,请确保设置环境变量ETCDCTL_API = 2。 另请参见READMEv2。
如果使用的是v3.4之前的发行版,请将ETCDCTL_API = 3设置为使用v3 API。
全局参数(例如dial-timeout,cacert,--cert,--key)可以通过环境变量设置。
ETCDCTL_DIAL_TIMEOUT=3s ETCDCTL_CACERT=/tmp/ca.pem ETCDCTL_CERT=/tmp/cert.pem ETCDCTL_KEY=/tmp/key.pem
使用ETCDCTL_前缀标志的字符串,将所有字母都转换为大写字母,并用下划线(_)替换破折号(-)。 请注意,前缀为ETCDCTL_的环境变量只能与etcdctl全局标志一起使用。 同样,环境变量ETCDCTL_API是仅在etcdctl内部使用的特殊情况变量。
键值对命令
PUT [选项]
PUT用指定的键分配指定的值。 如果键已经包含一个值,则将其覆盖。
RPC:Put
选项
- lease --附加到密钥的租约ID(以十六进制表示)。
- prev-kv --返回修改前的前一个键值对。
- ignore-value --使用其当前值更新Key。
- ignore-lease --使用其当前租约更新Key。
输出OK
示例:
./etcdctl put foo bar --lease=1234abcd # OK ./etcdctl get foo # foo # bar ./etcdctl put foo --ignore-value # 解开依附的租约 # OK
./etcdctl put foo bar --lease=1234abcd # OK ./etcdctl put foo bar1 --ignore-lease # 使用存在的租约1234abcd # OK ./etcdctl get foo # foo # bar1
./etcdctl put foo bar1 --prev-kv # OK # foo # bar ./etcdctl get foo # foo # bar1
备注:
如果未将
当
./etcdctl put <key> -- <value> ./etcdctl put -- <key> <value>
不支持在使用回车符后在新行中提供
./etcdctl put <key>\r <value>
可以具有多行或空格,但是必须为其提供双引号,如下所示:
./etcdctl put foo "bar1 2 3"
GET [选项]
如果指定了range_end,则GET会获取键或键范围[key,range_end)。
RPC:Range
选项
- hex --以十六进制编码的字符串形式输出键和值
- limit --最大结果数
- prefix --通过匹配前缀获取Key
- order --结果排序; 升序或降序
- sort-by --排序目标; 创建,键,修改,值或版本
- rev --指定kv版本
- print-value-only --与
write-out = simple一起使用时仅打印值 - consistency --Linearizable(l)或Serializable(s)
- from-key --使用字节比较获取大于或等于给定Key的Key
- keys-only --仅获取Key
输出
示例
首先,用一些键填充etcd:
./etcdctl put foo bar # OK ./etcdctl put foo1 bar1 # OK ./etcdctl put foo2 bar2 # OK ./etcdctl put foo3 bar3 # OK
获取名为foo的Key:
./etcdctl get foo # foo # bar
获取所有的Key:
./etcdctl get --from-key '' # foo # bar # foo1 # bar1 # foo2 # foo2 # foo3 # bar3
获取名称大于或等于foo1的所有键:
./etcdctl get --from-key foo1 # foo1 # bar1 # foo2 # bar2 # foo3 # bar3
获取名称大于或等于foo1且小于foo3的键:
./etcdctl get foo1 foo3 # foo1 # bar1 # foo2 # bar2
备注
如果任何键或值包含不可打印的字符或控制字符,则由于换行而导致简单格式化的输出可能不明确。 要解决此问题,请将--hex设置为对所有字符串进行十六进制编码。
DEL [选项]
如果指定了range_end,则删除指定的键或键范围[key,range_end)。
RPC:DeleteRange
选项
- prefix --通过匹配前缀删除Key
- prev-kv --返回已删除的键值对
- from-key --删除大于或等于给定Key字节的Key
输出
如果DEL成功,则打印以十进制删除的键的数目。
示例
./etcdctl put foo bar # OK ./etcdctl del foo # 1 ./etcdctl get foo
./etcdctl put key val # OK ./etcdctl del --prev-kv key # 1 # key # val ./etcdctl get key
./etcdctl put a 123 # OK ./etcdctl put b 456 # OK ./etcdctl put z 789 # OK ./etcdctl del --from-key a # 3 ./etcdctl get --from-key a
./etcdctl put zoo val # OK ./etcdctl put zoo1 val1 # OK ./etcdctl put zoo2 val2 # OK ./etcdctl del --prefix zoo # 3 ./etcdctl get zoo2
TXN [选项]
TXN从标准输入读取多个etcd请求,并将它们作为单个原子事务应用。 交易由条件清单组成,如果所有条件都为真,则应用请求列表;如果任何条件为假,则不应用请求列表。
RPC:Txn
选项
- hex --将键和值打印为十六进制编码的字符串。
- interactive --通过交互提示输入交易。
输入格式
<Txn> ::= <CMP>* "\n" <THEN> "\n" <ELSE> "\n"
<CMP> ::= (<CMPCREATE>|<CMPMOD>|<CMPVAL>|<CMPVER>|<CMPLEASE>) "\n"
<CMPOP> ::= "<" | "=" | ">"
<CMPCREATE> := ("c"|"create")"("<KEY>")" <CMPOP> <REVISION>
<CMPMOD> ::= ("m"|"mod")"("<KEY>")" <CMPOP> <REVISION>
<CMPVAL> ::= ("val"|"value")"("<KEY>")" <CMPOP> <VALUE>
<CMPVER> ::= ("ver"|"version")"("<KEY>")" <CMPOP> <VERSION>
<CMPLEASE> ::= "lease("<KEY>")" <CMPOP> <LEASE>
<THEN> ::= <OP>*
<ELSE> ::= <OP>*
<OP> ::= ((see put, get, del etcdctl command syntax)) "\n"
<KEY> ::= (%q formatted string)
<VALUE> ::= (%q formatted string)
<REVISION> ::= "\""[0-9]+"\""
<VERSION> ::= "\""[0-9]+"\""
<LEASE> ::= "\""[0-9]+\""
输出
如果etcd处理了事务成功列表,则SUCCESS;如果etcd处理了事务失败列表,则FAILURE。 打印已执行的请求列表中每个命令的输出,每个命令之间用空白行分隔。
示例
交互模式下的txn:
./etcdctl txn -i
# compares:
mod("key1") > "0"
# success requests (get, put, delete):
put key1 "overwrote-key1"
# failure requests (get, put, delete):
put key1 "created-key1"
put key2 "some extra key"
# FAILURE
# OK
# OK
非交互模式下的txn:
./etcdctl txn <<<'mod("key1") > "0"
put key1 "overwrote-key1"
put key1 "created-key1"
put key2 "some extra key"
'
# FAILURE
# OK
# OK
备注
在TXN命令中使用多行值时,换行符必须表示为\n。如果使用文字换行符将导致解析失败。这与其他命令(例如PUT)不同,在其他命令中,shell将为我们转换文字换行符。 例如:
./etcdctl txn <<<'mod("key1") > "0"
put key1 "overwrote-key1"
put key1 "created-key1"
put key2 "this is\na multi-line\nvalue"
'
# FAILURE
# OK
# OK
COMPACTION [选项]
COMPACTION丢弃给定修订版之前的所有etcd事件历史记录。 由于etcd使用多版本并发控制模型,因此它将所有关键更新保留为事件历史记录。 当不再需要修订的事件历史记录时,可以将所有被替换的键压缩以回收etcd后端数据库中的存储空间。
RPC: Compact
选项
- physical --值为
true则等待压缩到物理设备并删除所有旧修订
输出
打印压缩的修订版本
示例
./etcdctl compaction 1234 # compacted revision 1234
WATCH [选项] [key or prefix] [range_end] [--] [exec-command arg1 arg2 ...]
选项
输入格式
输出
示例
备注
LEASE
LEASE GRANT
输出
示例
LEASE REVOKE
输出
示例
LEASE TIMETOLIVE [选项]
选项
输出
示例
LEASE LIST
输出
示例
LEASE KEEP-ALIVE
输出
示例
集群维护命令
MEMBER
MEMBER ADD [选项]
选项
输出
示例
MEMBER UPDATE [选项]
选项
输出
示例
MEMBER REMOVE
输出
示例
MEMBER LIST
输出
示例
ENDPOINT
选项
ENDPOINT HEALTH
输出
示例
ENDPOINT STATUS
输出
示例
ENDPOINT HASHKV
输出
示例
ALARM
ALARM DISARM
输出
示例
ALARM LIST
输出
示例
DEFRAG [选项]
选项
输出
示例
备注
SNAPSHOT
SNAPSHOT SAVE
输出
示例
SNAPSHOT RESTORE [选项]
选项
输出
示例
SNAPSHOT STATUS
输出
示例
MOVE-LEADER
示例
并发命令
LOCK [选项] [命令 参数1 参数2 ...]
选项
输出
示例
备注
ELECT [选项] [proposal]
选项
输出
示例
备注
权限命令
AUTH
输出
示例
ROLE
ROLE ADD
输出
示例
ROLE GET
输出
示例
ROLE DELETE
输出
示例
ROLE LIST
输出
示例
ROLE GRANT-PERMISSION [选项] [endkey]
选项
输出
示例
ROLE REVOKE-PERMISSION [endkey]
选项
输出
示例
USER
USER ADD [选项]
选项
输出
示例
USER GET [选项]
选项
输出
示例
USER DELETE
选项
输出
示例
USER LIST
输出
示例
USER PASSWD [选项]
选项
输出
示例
USER GRANT-ROLE
选项
输出
示例
USER REVOKE-ROLE
输出
示例
效用命令
MAKE-MIRROR [选项]
选项
输出
示例
MIGRATE [选项]
选项
输出
示例
VERSION
输出
示例
CHECK
CHECK PERF [选项]
选项
输出
示例
CHECK DATASCALE [选项]
选项
输出
示例