命令行

etcdctl 是etcd集群的命令行工具。 我们可以在服务器或者是在脚本中通过etcdctl来进行集群的操作、管理和维护。

前面已经提到了,etcdctl也有两个版本,我们在使用过程中,需要注意版本对应关系。 首先我们来看看etcdctl v2的使用。

V2

配置

--debug

  • 输出curl命令,可以用来重现request请求

etcdctl --debug  get magic
------------
start to sync cluster using endpoints(http://127.0.0.1:4001,http://127.0.0.1:2379)
cURL Command: curl -X GET http://127.0.0.1:4001/v2/members
cURL Command: curl -X GET http://127.0.0.1:2379/v2/members
got endpoints(http://10.103.113.127:2379) after sync
Cluster-Endpoints: http://10.103.113.127:2379
cURL Command: curl -X GET http://10.103.113.127:2379/v2/keys/magic?quorum=false&recursive=false&sorted=false
22

--no-sync

  • 在发送request请求之前不会同步集群信息

  • 使用此选项可访问未发布的客户端

  • 没有这个参数,--endpoint的值将被etcd集群覆盖

--output, -o

  • 用指定的格式输出响应 (simple, extended或者json)

  • 默认: simple

--discovery-srv, -D

  • domain name to query for SRV records describing cluster endpoints

  • 默认: none

  • 环境变量: ETCDCTL_DISCOVERY_SRV

--peers

--endpoints

--cert-file

  • 使用SSL认证的HTTPS客户端证书文件

  • 默认值:none

  • 环境变量: ETCDCTL_CERT_FILE

--key-file

  • 使用SSL认证的HTTPS客户端key文件

  • 默认: none

  • 环境变量 ETCDCTL_KEY_FILE

--ca-file

  • ca证书认证

  • 默认: none

  • 环境变量: ETCDCTL_CA_FILE

--username, -u

  • 用户名:密码认证

  • 默认: none

  • 环境变量: ETCDCTL_USERNAME

--timeout

  • 每次请求的连接超时时间

  • 默认 1s

--total-timeout

  • 命令异常超时时间

  • 默认:5s

使用案例

设置key值

给/foo/bar 这个key设置一个值

设置一个具有60s过期时间的key

带条件的设置, 当之前的值为"Hello World" 时,设置值为 "Goodbye world"

带条件的设置,当/foo/bar在etcd中的索引为12时,设置对应key的值

当key不存在时,创建一个新key

按照次序常见一个新的key 在文件夹/fooDir下

当目录不存在时,创建一个新目录

更新一个已存在的key /foo/bar

创建或者更新一个叫/mydir 的目录

检索key

获取当前key的值

获取key的值以及一些额外的元数据信息

列举目录

递归列举出所有的目录

删除key

删除一个空的目录或者键值对

递归删除key以及子key

带条件的删除

Watch监听

监听key的下一个变化

持续监听

返回码

etcd会返回以下返回码

Endpoint

可以通过endpoint进行远程连接etcd集群,进行相应的操作

用户名和密码

如果etcd集群经过认证保护,可以通过指定用户名和密码的方式进行访问

DNS 发现

为了通过SRV记录进行etcd的集群服务发现, 指定 --discovery-srv参数或者ETCDCTL_DISCOVERY_SRV 环境变量。 此操作优先级高于 --endpoint 参数

V3

参考

Last updated