2014-12-31 17:11:09 +08:00
|
|
|
|
## 使用 etcdctl
|
|
|
|
|
|
2017-12-03 13:57:02 +08:00
|
|
|
|
`etcdctl` 是一个命令行客户端,它能提供一些简洁的命令,供用户直接跟 `etcd` 服务打交道,而无需基于 `HTTP API` 方式。这在某些情况下将很方便,例如用户对服务进行测试或者手动修改数据库内容。我们也推荐在刚接触 `etcd` 时通过 `etcdctl` 命令来熟悉相关的操作,这些操作跟 `HTTP API` 实际上是对应的。
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
2017-12-03 13:57:02 +08:00
|
|
|
|
`etcd` 项目二进制发行包中已经包含了 `etcdctl` 工具,没有的话,可以从 [github.com/coreos/etcd/releases](https://github.com/coreos/etcd/releases) 下载。
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
2017-12-03 13:57:02 +08:00
|
|
|
|
`etcdctl` 支持如下的命令,大体上分为数据库操作和非数据库操作两类,后面将分别进行解释。
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
2017-12-03 13:57:02 +08:00
|
|
|
|
```
|
2014-12-31 17:11:09 +08:00
|
|
|
|
NAME:
|
2017-12-03 13:57:02 +08:00
|
|
|
|
etcdctl - A simple command line client for etcd3.
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
|
|
|
|
USAGE:
|
2017-12-03 13:57:02 +08:00
|
|
|
|
etcdctl
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
|
|
|
|
VERSION:
|
2017-12-03 13:57:02 +08:00
|
|
|
|
3.2.10
|
|
|
|
|
|
|
|
|
|
API VERSION:
|
|
|
|
|
3.2
|
|
|
|
|
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
|
|
|
|
COMMANDS:
|
2017-12-03 13:57:02 +08:00
|
|
|
|
get Gets the key or a range of keys
|
|
|
|
|
put Puts the given key into the store
|
|
|
|
|
del Removes the specified key or range of keys [key, range_end)
|
|
|
|
|
txn Txn processes all the requests in one transaction
|
|
|
|
|
compaction Compacts the event history in etcd
|
|
|
|
|
alarm disarm Disarms all alarms
|
|
|
|
|
alarm list Lists all alarms
|
|
|
|
|
defrag Defragments the storage of the etcd members with given endpoints
|
|
|
|
|
endpoint health Checks the healthiness of endpoints specified in `--endpoints` flag
|
|
|
|
|
endpoint status Prints out the status of endpoints specified in `--endpoints` flag
|
|
|
|
|
watch Watches events stream on keys or prefixes
|
|
|
|
|
version Prints the version of etcdctl
|
|
|
|
|
lease grant Creates leases
|
|
|
|
|
lease revoke Revokes leases
|
|
|
|
|
lease timetolive Get lease information
|
|
|
|
|
lease keep-alive Keeps leases alive (renew)
|
|
|
|
|
member add Adds a member into the cluster
|
|
|
|
|
member remove Removes a member from the cluster
|
|
|
|
|
member update Updates a member in the cluster
|
|
|
|
|
member list Lists all members in the cluster
|
|
|
|
|
snapshot save Stores an etcd node backend snapshot to a given file
|
|
|
|
|
snapshot restore Restores an etcd member snapshot to an etcd directory
|
|
|
|
|
snapshot status Gets backend snapshot status of a given file
|
|
|
|
|
make-mirror Makes a mirror at the destination etcd cluster
|
|
|
|
|
migrate Migrates keys in a v2 store to a mvcc store
|
|
|
|
|
lock Acquires a named lock
|
|
|
|
|
elect Observes and participates in leader election
|
|
|
|
|
auth enable Enables authentication
|
|
|
|
|
auth disable Disables authentication
|
|
|
|
|
user add Adds a new user
|
|
|
|
|
user delete Deletes a user
|
|
|
|
|
user get Gets detailed information of a user
|
|
|
|
|
user list Lists all users
|
|
|
|
|
user passwd Changes password of user
|
|
|
|
|
user grant-role Grants a role to a user
|
|
|
|
|
user revoke-role Revokes a role from a user
|
|
|
|
|
role add Adds a new role
|
|
|
|
|
role delete Deletes a role
|
|
|
|
|
role get Gets detailed information of a role
|
|
|
|
|
role list Lists all roles
|
|
|
|
|
role grant-permission Grants a key to a role
|
|
|
|
|
role revoke-permission Revokes a key from a role
|
|
|
|
|
check perf Check the performance of the etcd cluster
|
|
|
|
|
help Help about any command
|
|
|
|
|
|
|
|
|
|
OPTIONS:
|
|
|
|
|
--cacert="" verify certificates of TLS-enabled secure servers using this CA bundle
|
|
|
|
|
--cert="" identify secure client using this TLS certificate file
|
|
|
|
|
--command-timeout=5s timeout for short running command (excluding dial timeout)
|
|
|
|
|
--debug[=false] enable client-side debug logging
|
|
|
|
|
--dial-timeout=2s dial timeout for client connections
|
|
|
|
|
--endpoints=[127.0.0.1:2379] gRPC endpoints
|
|
|
|
|
--hex[=false] print byte strings as hex encoded strings
|
|
|
|
|
--insecure-skip-tls-verify[=false] skip server certificate verification
|
|
|
|
|
--insecure-transport[=true] disable transport security for client connections
|
|
|
|
|
--key="" identify secure client using this TLS key file
|
|
|
|
|
--user="" username[:password] for authentication (prompt if password is not supplied)
|
|
|
|
|
-w, --write-out="simple" set the output format (fields, json, protobuf, simple, table)
|
2014-12-31 17:11:09 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 数据库操作
|
2017-12-03 13:57:02 +08:00
|
|
|
|
|
2014-12-31 17:11:09 +08:00
|
|
|
|
数据库操作围绕对键值和目录的 CRUD (符合 REST 风格的一套操作:Create)完整生命周期的管理。
|
|
|
|
|
|
|
|
|
|
etcd 在键的组织上采用了层次化的空间结构(类似于文件系统中目录的概念),用户指定的键可以为单独的名字,如 `testkey`,此时实际上放在根目录 `/` 下面,也可以为指定目录结构,如 `cluster1/node2/testkey`,则将创建相应的目录结构。
|
|
|
|
|
|
2017-12-03 13:57:02 +08:00
|
|
|
|
>注:CRUD 即 Create, Read, Update, Delete,是符合 REST 风格的一套 API 操作。
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
2017-12-03 13:57:02 +08:00
|
|
|
|
#### put
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
2017-11-22 11:13:23 +08:00
|
|
|
|
```bash
|
2017-12-03 13:57:02 +08:00
|
|
|
|
$ etcdctl put /testdir/testkey "Hello world"
|
|
|
|
|
OK
|
2014-12-31 17:11:09 +08:00
|
|
|
|
```
|
|
|
|
|
|
2017-12-03 13:57:02 +08:00
|
|
|
|
#### get
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
2017-12-03 13:57:02 +08:00
|
|
|
|
获取指定键的值。例如
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
2017-11-22 11:13:23 +08:00
|
|
|
|
```bash
|
2017-12-03 13:57:02 +08:00
|
|
|
|
$ etcdctl put testkey hello
|
|
|
|
|
OK
|
|
|
|
|
$ etcdctl get testkey
|
|
|
|
|
testkey
|
2014-12-31 17:11:09 +08:00
|
|
|
|
hello
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
支持的选项为
|
|
|
|
|
|
2017-12-03 13:57:02 +08:00
|
|
|
|
`--sort` 对结果进行排序
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
2017-12-03 13:57:02 +08:00
|
|
|
|
`--consistent` 将请求发给主节点,保证获取内容的一致性
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
2017-12-03 13:57:02 +08:00
|
|
|
|
#### del
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
2017-12-03 13:57:02 +08:00
|
|
|
|
删除某个键值。例如
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
2017-11-22 11:13:23 +08:00
|
|
|
|
```bash
|
2017-12-03 13:57:02 +08:00
|
|
|
|
$ etcdctl del testkey
|
|
|
|
|
1
|
2014-12-31 17:11:09 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 非数据库操作
|
|
|
|
|
|
|
|
|
|
#### watch
|
2017-12-03 13:57:02 +08:00
|
|
|
|
|
2017-12-03 14:04:03 +08:00
|
|
|
|
监测一个键值的变化,一旦键值发生更新,就会输出最新的值。
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
|
|
|
|
例如,用户更新 testkey 键值为 Hello world。
|
2017-12-03 13:57:02 +08:00
|
|
|
|
|
2017-11-22 11:13:23 +08:00
|
|
|
|
```bash
|
2014-12-31 17:11:09 +08:00
|
|
|
|
$ etcdctl watch testkey
|
2017-12-03 14:04:03 +08:00
|
|
|
|
PUT
|
|
|
|
|
testkey
|
|
|
|
|
2
|
2014-12-31 17:11:09 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### member
|
2017-12-03 13:57:02 +08:00
|
|
|
|
|
|
|
|
|
通过 `list`、`add`、`update`、`remove` 命令列出、添加、更新、删除 etcd 实例到 etcd 集群中。
|
2014-12-31 17:11:09 +08:00
|
|
|
|
|
|
|
|
|
例如本地启动一个 etcd 服务实例后,可以用如下命令进行查看。
|
2017-12-03 13:57:02 +08:00
|
|
|
|
|
2017-11-22 11:13:23 +08:00
|
|
|
|
```bash
|
2014-12-31 17:11:09 +08:00
|
|
|
|
$ etcdctl member list
|
2017-12-03 13:57:02 +08:00
|
|
|
|
422a74f03b622fef, started, node1, http://172.16.238.100:2380, http://172.16.238.100:23
|
2014-12-31 17:11:09 +08:00
|
|
|
|
```
|