上一讲我们安装 etcd 服务端,这一讲我们来一起学学如何使用 etcd 客户端常见的命令。文章内容来源于参考资料,如若侵权,请联系删除,谢谢。
etcd可通过客户端命令行工具 etcdctl 对etcd进行请求操作
- # 帮助命令,会列出所有的命令和选项,在记不太清命令的时候,可以使用
- etcdctl ‐h
- # 对某个命令进行更加详细的介绍
- etcdctl put -h
复制代码 1、etcdctl 常见命令
1.1 键操作
键操作包括最常用的增删改查操作,包括PUT、GET、DELETE等命令。注意:etcd 中 PUT 当 key 不存在是新增,当 key 存在时是修改。- # PUT 新增或者修改某个键的值
- etcdctl put /stu/name /xiaole
- #GET获取指定键的值
- etcdctl get /stu/name
- #以16进制格式返回
- etcdctl get /stu/name ‐‐hex
- #获取key范围内的值 半开区间:左闭右开
- etcdctl get /stu/name /xiaole3
- #获取指定前缀的值 可以使用选项 ‐‐limit 限制返回的key数量。
- etcdctl get ‐‐prefix /stu/name
- etcdctl get ‐‐prefix /stu/name ‐‐limit3
- #按key的字典顺序读取
- #读取字典顺序大于或等于 name2 的key:
- etcdctl get ‐‐from‐key name2
- # etcd可通过读取一个key来获取当前etcd服务端的版本号,不管key是否存在
- etcdctl get /stu ‐w=json
- #访问以前版本的key
- etcdctl get ‐‐rev=8 /test/name #访问第8个版本的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开始计数。
- # 删除一个键或者特定范围的键
- etcdctl del /aaa/bbb
- etcdctl del /test/name /test/name3
- #可以通过选项 ‐‐prev‐kv 让命令返回对应的值
- etcdctl del ‐‐prev‐kv name1
复制代码 1.2 watch 操作
watch 监测一个键值的变化,一旦键值发生更新,就会输出最新的值并退出另一个终端输入 etcdctl put /test/name fox
1.3 lease(租约)操作
类似 redis 的 TTL,etcd 中的键值对可以绑定到租约上,实现存活周期控制。应用客户端可以 为 etcd 集群里面的键授予租约,一旦租约的TTL到期,租约就会过期并且所有附带的键都将被删除- # 授予租约 TTL 为30s
- etcdctl lease grant 30
- #将 key 与 租约进行绑定
- etcdctl put ‐‐lease=705b8474d1acd63b name fox
复制代码 当然,应用通过租约ID可以撤销租约。撤销租约将删除所有附带的key- #撤销租约
- etcdctl lease revoke 705b8474d1acd641
复制代码 应用程序可以通过刷新其TTL保持租约存活,因此不会过期- # 刷新租约
- etcdctl lease keep-alive 705b8474d1acd63b
复制代码 应用客户端可以查询租约信息,检查续订或租约的状态,是否存在或者是否已过期- # 查询租约
- etcdctl lease timetolive 705b8474d1acd647
- etcdctl lease timetolive ‐‐keys 705b8474d1acd647
复制代码 2、etcd权限管理
2.1 权限常用命令
2.1.1 用户管理
- # 创建用户
- etcdctl user add fox
- # 删除用户
- etcdctl user del fox
- #修改密码
- etcdctl user passwd fox
- #查看所有用户
- etcdctl user list
- #查看指定用户及绑定角色
- etcdctl user get fox
复制代码 2.1.2 角色管理
- # 创建角色
- etcdctl role add test
- # 给角色赋权,可读/可写/可读写
- etcdctl grant‐permission role_name [read|write|readwrite] /name
- # 回收角色赋权
- etcdctl role revoke‐permission role_name /name
- #删除角色
- etcdctl role del test
- #查询角色列表
- etcdctl role list
- #查询指定角色的权限
- etcdctl role get test
- #用户绑定角色
- etcdctl user grant‐role 用户名 角色名
- #回收用户绑定权限
- etcdctl user revoke‐role 用户名 角色名
- # 开启权限
- etcdctl user add root
- #root用户存在时才能开启权限控制
- etcdctl auth enable
- # 查看用户列表
- etcdctl user list ‐‐user=root
- # 权限使用
- etcdctl ‐‐user='用户名' ‐‐password='密码' get /name
复制代码 2.2 集群权限管理
2.2.1 root用户
root 用户是 etcd 默认就有的用户,拥有所有的权限
- # root用户自带所有权限,因此只需创建该用户,开启认证即有所有权限
- etcdctl ‐‐endpoints http://127.0.0.1:12379,http://127.0.0.1:22379,http://127.0.0.1:32379 user add root
- # 开启身份验证
- etcdctl ‐‐user='root' ‐‐password='123456' ‐‐endpoints http://127.0.0.1:12379,http://127.0.0.1:22379,http://127.0.0.1:32379 auth enable
- # 操作
- etcdctl ‐‐user='root' ‐‐password='123456' put name fox
- etcdctl ‐‐user='root' ‐‐password='123456' get name
复制代码 2.2.2 普通用户
- # 创建普通用户
- etcdctl ‐‐user='root' ‐‐password='123456' ‐‐endpoints http://127.0.0.1:12379,http://127.0.0.1:22379,http://127.0.0.1:32379 user add fox
- # 创建角色
- etcdctl‐‐user='root'‐‐password='123456'‐‐endpointshttp://127.0.0.1:12 379,http://127.0.0.1:22379,http://127.0.0.1:32379 role add test
- # 用户绑定角色
- etcdctl ‐‐user='root' ‐‐password='123456' ‐‐endpoints http://127.0.0.1:12
- 379,http://127.0.0.1:22379,http://127.0.0.1:32379 user grant‐role fox test
- # 给角色赋权
- etcdctl ‐‐user='root' ‐‐password='123456' ‐‐endpoints http://127.0.0.1:12379,http://127.0.0.1:22379,http://127.0.0.1:32379 role grant‐permission test readwrite /name
复制代码 参考资料:
bilibili视频教程
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |