目录
etcdctl命令全局选项参数
参数 | 说明 |
---|---|
--debug | 输出调试信息,显示执行命令的时候发起的请求 |
--no-sync | 发出请求钱不主动同步集群信息 |
--output, -o 'simple' | 输出响应消息的格式,可以为simple,json或extended |
--discovery-srv, -D | 通过域名查询,来探测集群成员信息 |
--peers, -C | 集群中成员地址列表,用逗号隔开 |
--endpoint | 集群中成员地址列表 |
--cert-file | 如果集群需要https认证,提供TLS的证书文件路径 |
--key-file HTTPS | 认证的证书文件路径 |
--ca-file | 域名相关的根证书文件路径 |
--username, -u username[:password] | 用户名和密码验证信息 |
--timeout '1s' | 请求的连接超时,默认为1s |
--total-timeout '5s' | 命令执行总超时,默认为5s |
--version, -v | 打印版本信息 |
etcd命令预览
etcd支持的命令大体上可以分为两类,数据类操作、非数据类操作
数据类操作
命令 | 说明 |
---|---|
set | 设置键对应的值 |
get | 获取键对应的值 |
update | 更新键对应的值 |
mk | 创建新的值 |
rm | 删除键值或目录 |
watch | 监控某键值的变化 |
exec-watch | 监控到某键值变化时,执行的命令 |
ls | 列出目录下的内容 |
mkdir | 创建新的目录 |
rmdir | 删除空目录或者一个键值 |
setdir | 创建目录(允许目录已经存在) |
updatedir | 更新已经存在的目录 |
非数据类操作
命令 | 说明 |
---|---|
backup | 备份指定的目录 |
cluster-health | 检查etcd集群健康情况 |
member | 添加、删除或列出成员,需要带具体的子命令 |
import | 导入快照 |
user | 用户添加、权限管理,需要带具体子命令 |
role | 角色添加、权限管理,需要带具体子命令 |
auth | 全局认证管理 |
数据类操作
1. set
[root@node2 ~]# etcdctl set /testdir/testkey "helloworld"helloworld
2. get
[root@node2 ~]# etcdctl get /testdir/testkeyhelloworld[root@node2 ~]# 支持--sort,对返回结果进行排序
3. update
[root@node2 ~]# etcdctl update /testdir/testkey hellohello[root@node2 ~]# etcdctl get /testdir/testkeyhello[root@node2 ~]#
4. mk
如果给定的键不存在,则创建,否则报错[root@node2 ~]# etcdctl mk /testdir/testkey2 hellohello[root@node2 ~]#[root@node2 ~]# etcdctl mk /testdir/testkey helloError: 105: Key already exists (/testdir/testkey) [16]
【set与mk区别】 当键存在是set会修改键的值,mk则会报错
5. rm
删除某个键,键不存在就报错[root@node2 ~]# etcdctl rm /testdir/testkey2PrevNode.Value: hello--dir 如果键是空目录或者是键值对则删除--recursive 删除目录和所有子键
6. watch
监控一个键值的变化,发现键值更新后就回退出--forever 一直监测,知道用户按CTRL+C退出
7. exec-watch
监测一个键值的变化,一旦键值发生更新,执行指定的命令[root@node2 ~]# etcdctl exec-watch /testdir/testkey -- sh -c 'ls /'bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var该命令会一直执行下去,不会像watch一样,监测到一次更新后就退出
8. mkdir
如果给定的目录不存在则创建,存在会报错[root@node2 ~]# etcdctl mkdir /test/testc --ttl 10 --ttl 超时时间单位s,10s后目录会被删除
9. rmdir
删除一个空目录,或键值对。若目录不为空,会报错。[root@node2 ~]# etcdctl mkdir /testa[root@node2 ~]# etcdctl rmdir /testa/[root@node2 ~]#[root@node2 ~]# etcdctl ls /testdir//testdir/testkey/testdir/testkey2[root@node2 ~]# etcdctl rmdir /testdir/Error: 108: Directory not empty (/testdir) [28][root@node2 ~]#
11. setdir
创建一个空目录,如果目录已经存在会报错[root@node2 ~]# etcdctl setdir /etc/testb[root@node2 ~]# etcdctl ls /etc/testb[root@node2 ~]# etcdctl setdir /etc/testbError: 102: Not a file (/etc/testb) [34][root@node2 ~]#
12. updatedir
用于更新已经存在的目录属性(目前只有存活时间)[root@node2 ~]# etcdctl mkdir /test/testc --ttl 10[root@node2 ~]# etcdctl mkdir /test/testc --ttl 30[root@node2 ~]# etcdctl updatedir /test/testc --ttl 300[root@node2 ~]#
非数据类操作
1. backup
--data-dir value 数据目录路径 --wal-dir value Path to the etcd wal dir --backup-dir value 备份数据到指定目录 --backup-wal-dir value Path to the backup wal dir --with-v3 Backup v3 backend data[root@node2 ~]# cat /etc/etcd/etcd.conf |grep data-dirdata-dir: "/opt/etcd_data"[root@node2 ~]# ls /opt/etcd_datamember[root@node2 ~]# etcdctl backup --data-dir /opt/etcd_data --backup-dir /tmp/2019-06-05 22:37:20.757947 I | ignoring EntryConfChange raft entry2019-06-05 22:37:20.758148 I | ignoring EntryConfChange raft entry2019-06-05 22:37:20.758170 I | ignoring EntryConfChange raft entry2019-06-05 22:37:20.758314 I | ignoring member attribute update on /0/members/cf5538a4dab95927/attributes2019-06-05 22:37:20.758356 I | ignoring member attribute update on /0/members/a3d1fb0d28ed2953/attributes2019-06-05 22:37:20.758387 I | ignoring member attribute update on /0/members/8816eaa680e63c73/attributes2019-06-05 22:37:20.758455 I | ignoring v3 raft entry2019-06-05 22:37:20.758484 I | ignoring member attribute update on /0/members/cf5538a4dab95927/attributes2019-06-05 22:37:20.758509 I | ignoring member attribute update on /0/members/a3d1fb0d28ed2953/attributes2019-06-05 22:37:20.758534 I | ignoring member attribute update on /0/members/8816eaa680e63c73/attributes2019-06-05 22:37:20.758575 I | ignoring member attribute update on /0/members/8816eaa680e63c73/attributes2019-06-05 22:37:20.758608 I | ignoring member attribute update on /0/members/a3d1fb0d28ed2953/attributes2019-06-05 22:37:20.758633 I | ignoring member attribute update on /0/members/cf5538a4dab95927/attributes2019-06-05 22:37:20.758720 I | ignoring v3 raft entry2019-06-05 22:37:20.758870 I | ignoring member attribute update on /0/members/cf5538a4dab95927/attributes2019-06-05 22:37:20.758891 I | ignoring member attribute update on /0/members/a3d1fb0d28ed2953/attributes2019-06-05 22:37:20.758902 I | ignoring member attribute update on /0/members/8816eaa680e63c73/attributes[root@node2 ~]# ls /tmp/member/snap wal[root@node2 ~]# snap 快照目录,保存节点状态快照文件wal 保存了数据库预写日志信息【预写日志】预写日志要求数据库在发生实际提交前必须先将操作写入日志,可以保障系统在崩溃后根据日志状态恢复状态。
2. cluster-health
3. member
4. role
add 添加一个角色get 查询角色细节list 列出所有用户角色remove 删除用户角色grant 添加路径到角色控制 ,r:w:rwrevoke 删除某路径的用户角色信息默认带有root,guest两种角色,前者为最高权限用户,后者为不带验证情况下的用户添加一个角色[root@node2 ~]# etcdctl role add read_testdirRole read_testdir created[root@node2 ~]#设置该角色具有对/testdir/目录有读权限[root@node2 ~]# etcdctl role grant read_testdir -path '/testdir/*' -readRole read_testdir updated[root@node2 ~]#
5. user
对用户进行管理,add 添加一个用户get 查询用户细节list 列出所有用户remove 删除用户grant 添加用户到j角色revoke 删除用户角色passwd 修改用户的密码默认情况下,需要先创建(启用)root用户作为etcd集群的最高权限管理员[root@node2 ~]# etcdctl user add rootNew password: User root created[root@node2 ~]# etcdctl user add test1New password: User test1 created[root@node2 ~]# 分配已有角色给用户[root@node2 ~]# etcdctl user grant test1 -roles read_testdirUser test1 updated[root@node2 ~]#查看用户细节[root@node2 ~]# etcdctl user get test1User: test1Roles: read_testdir-[root@node2 ~]# etcdctl user get test1 #用户具有多种角色User: test1Roles: read_testdir root删除用户角色[root@node2 ~]# etcdctl user revoke test1 -roles read_testdirUser test1 updated[root@node2 ~]#
6. auth
是否启用访问验证。enable为启用,disable为禁用。[root@node2 ~]# etcdctl user listInsufficient credentials[root@node2 ~]# etcdctl --username root:123 user list 使用--username 用户名:密码访问roottest1[root@node2 ~]#
参考
《Docker技术入门与实战》 第二版 https://blog.csdn.net/fnatic_/article/details/84307332