上一讲我们安装 etcd 服务端,这一讲我们来一起学学如何使用 etcd 客户端常见的命令。文章内容来源于参考资料,如若侵权,请联系删除,谢谢。

etcd可通过客户端命令行工具 etcdctl 对etcd进行请求操作

# 帮助命令,会列出所有的命令和选项,在记不太清命令的时候,可以使用
etcdctl ‐h # 对某个命令进行更加详细的介绍
etcdctl put -h

这里给大家推荐一个小巧的 etcd 的可视化工具:ETCD Keeper。平常开发过程中使用还是比较方便的。

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  watch  /test/name

另一个终端输入 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
# 查看 etcd 的 revision 等信息
etcdctl endpoint status --write-out="json" --endpoints=localhost:12380 # 查看 etcd 那个节点是 leader
etcdctl -w table --endpoints=localhost:12380 endpoint status --cluster

1.4 compact 操作

# 查看告警信息,告警信息一般 memberID:8630161756594109333 alarm:NOSPACE
etcdctl --endpoints=http://127.0.0.1:2379 alarm list # 获取当前版本
rev=$(etcdctl --endpoints=http://127.0.0.1:2379 endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*') # 压缩掉所有旧版本
etcdctl --endpoints=http://127.0.0.1:2379 compact $rev # 整理多余的空间
etcdctl --endpoints=http://127.0.0.1:2379 defrag # 取消告警信息
etcdctl --endpoints=http://127.0.0.1:2379 alarm disarm

注意,compact 和 defrag 时, 都需要把集群中的所有 endpoint 添加上去, 否则不会减少磁盘空间

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视频教程

ETCD数据空间压缩清理

03、Etcd 客户端常用命令的更多相关文章

  1. linux svn客户端 常用命令

    查看文件或者目录状态: [root@v01 ~]# svn status online/ #正常情况下没显示 [root@v01 ~]# svn status online/ #如果有变动会有如下显示 ...

  2. SVN客户端常用命令

    1. 将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如: cd /home/www  #进入准备获取的项目路径 svn checkout svn: ...

  3. ETCD的常用命令

    Note that any key that was created using the v2 API will not be able to be queried via the v3 API. A ...

  4. 锐捷linux客户端常用命令(主要用来连接校园网或公司局域网)

     锐捷访问校园网,.sh脚本文件rjsu*.sh-u 用户名-P 密码-S 参数1保存密码参数0不保存密码   其实:  直接使用md5认证方式输入用户名密码并且配置好ip之后,重新打开网卡即可有一定 ...

  5. oozie 客户端常用命令

    1.提交作业,作业进入PREP状态 oozie job -oozie http://localhost:11000/oozie -config job.properties -submit job: ...

  6. [sqoop1.99.7] sqoop入门-下载、安装、运行和常用命令

    一.简介 Apache Sqoop is a tool designed for efficiently transferring data betweeen structured, semi-str ...

  7. SVN常用命令说明

    本文转载至  http://www.blogjava.net/jasmine214--love/archive/2011/01/12/342839.html :1.5 及更新版本 名词说明: WC:W ...

  8. SVN常用命令说明(转载)

    转自:http://www.blogjava.net/jasmine214--love/archive/2011/01/12/342839.html /** * 转载请注明作者longdick htt ...

  9. ZooKeeper 06 - ZooKeeper 的常用命令

    目录 1 - 服务端常用命令 2 - 客户端常用命令 3 - 常用四字命令 4 - ZooKeeper 日志的可视化 版权声明 若要部署 ZooKeeper 单机环境,请查看此篇:https://ww ...

  10. ETCD快速入门-03 常用命令

    3. ETCD 常用命令     etcdctl是一个命令行的客户端,它提供了一些命令,可以方便我们在对服务进行测试或者手动修改数据库内容.etcdctl与kubectl和systemctl的命令原理 ...

随机推荐

  1. [转帖]【JVM】类文件结构

    Class文件的定义 一组以8字节为基础单位的二进制流, 各个数据项目严格按照顺序紧凑排列在class文件中, 中间没有任何分隔符,这使得class文件中存储的内容几乎是全部程序运行的程序. 注:Ja ...

  2. Cosmic云星瀚的简单学习-测试用户创建

    摘要 上一个学习文档里面总结了: 修改domain的url之后就可以重启服务然后登录了. 今天中午创建了一个业务用户,发现还挺麻烦的 因为可能短信服务有问题, 所以我这边需要有改数据库表的需求. 这里 ...

  3. 跨主机Docker容器通信的学习

    背景 骨折在家找自己的人比较少. 又因为出不去也没法做运动,就不如将之前没学习深入的地方学习下 先是进行Docker 搭建 redis cluster的处理. 当时发现必须使用 --net=host进 ...

  4. SingleNode HDFS 搭建过程

    背景 1. 纯粹测试 2. 未考虑安全和授权以及数据处理. 3. 单节点最简单的部署, 验证功能连接的可能性 资料获取以及环境变量的设置 获取最新的安装文件 https://downloads.apa ...

  5. interface{}类型 + fmt.Sprintf() 导致栈逃逸

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 对部分代码进行了栈逃逸检查: go build -gcfl ...

  6. yum 安装失败解决思路$releasever(curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error")

    问题 公司使用刀片机的系统版本是CentOS 7.9.2009(Core),本人在重新安装虚拟机时,也使用对应的系统版本,在安装软件时,yum无法正常使用,一开始觉得,centos的release版本 ...

  7. 什么是 Java 字节码?采用字节码的好处是什么?

    在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机.Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效 ...

  8. PE格式:VA地址与FOA地址

    PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如 ...

  9. ::v-deep样式穿透

    //如果不加样式穿透,vue永远会在input后面加唯一样式字段data-v-1d9b105c //::v-deep拼在哪个位置,哪个位置就有唯一标识data-v-1d9b105c .divBox : ...

  10. ABC 317 A - G

    ABC 317 A - G 代码去 Atcoder 全部提交搜索 Std_Code 查看代码 懒人专用 A $ p_i $ 升序,找最小的 $ i $ 满足 $ p_i + h \ge x $ 直接枚 ...