首页 > 其他分享 >03、Etcd 客户端常用命令

03、Etcd 客户端常用命令

时间:2023-05-21 23:00:25浏览次数:44  
标签:03 127.0 Etcd 0.1 etcdctl user key 常用命令 name

上一讲我们安装 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  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

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

标签:03,127.0,Etcd,0.1,etcdctl,user,key,常用命令,name
From: https://www.cnblogs.com/huageyiyangdewo/p/17419412.html

相关文章

  • 【CSP 202303-4】星际网络Ⅱ 【离散化+线段树】
    题目链接http://118.190.20.162/view.page?gpid=T162题意一个网络地址由\(n\)(\(n\leq512\),且是16的倍数)位二进制位组成(形如xxxx:xxxx:....:xxxx),有若干用户需要申请一些网络地址。有三种操作:申请。给出一个用户编号,和要查询的地址区间[L,R],若全都没有被申请过,或者......
  • docker常用命令使用
    commit(作为一个新的镜像方便使用,可使用dockerimages进行查看新的镜像)dockercommit-a="authorinfo"-m="psinfo"mirroridnew-mirror-name 容器数据卷挂在,将容器内的目录挂在到本机linux上端口暴露需修改成自己需要的dockerrun-it-vlinuxfiledirectory/con......
  • ES常用命令
    一、Maven依赖在使用Java连接Elasticsearch前,需要在Maven中引入相关的依赖包。在pom.xml文件中添加以下依赖:<!--elasticsearch客户端--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><......
  • HDU-1003- Max Sum (动态规划)
    MaxSumTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):192050    AcceptedSubmission(s):44727ProblemDescriptionGivenasequencea[1],a[2],a[3]......a[n],yourjobistocalculatethe......
  • 【linux基础-03】Linux命令速查手册
    查看Linux系统信息arch#显示机器的处理器架构(1)uname-m#显示机器的处理器架构(2)uname-r#显示正在使用的内核版本dmidecode-q#显示硬件系统部件-(SMBIOS/DMI)hdparm-i/dev/hda#罗列一个磁盘的架构特性hdparm-tT/dev/sda#在磁盘上执......
  • Field userClient in com.demo.order.service.OrderService required a bean of type'
    在SpringCloud项目中使用Feign进行远程调用遇到的错误。原因是因为UserClient在com.demo.feign.clients包下面,而order-service的@EnableFeignClientd注解却在com.demo.order包下面,这两个不在同一个包下,无法扫描到UserClient。解决方法有两种1.指定Feign应该扫描的包@EnableFeig......
  • Revit二次开发实战03(事务Transaction)
    Revit二次开发实战事务必须首先要启动Start,操作完成后提交事务Commit,如果执行异常,则要执行回滚操作RollBack;可以通过GetStatus获取事务的当前状态,根据事务状态决定程序的走向;事务Transaction是非托管对象,必须手动释放Dispose,或者放到using代码块中,让编译器自动释放;如果要对文......
  • Check the tbs' usage in PDB and CDB
    ---checkoutthetbs'susageinPDBandCDB,runinCDBsetline200pages999columnnamefora10columntablespace_namefora15column"MAXSIZE(GB)"format9,999,990.00column"ALLOC(GB)"format9,999,990.00column"U......
  • pta_【CPP0039】vector应用测试
    #include<iostream>#include<vector>#include<algorithm>usingnamespacestd;intmain(void){inti,a[10],b;for(i=0;i<10;i++){scanf("%d",&a[i]);}scanf("%d",&b);//插入的数{vector<int&......
  • 人月神话 读书笔记 03
    第9章削足适履9.1程序有多大?除了运行时间以外,它所占据的空间也是主要开销。当系统设计者认为对用户而言,常驻程序内存的形式比加法器、磁盘等更加有用时,他会将硬件实现中的一部分移到内存上。相反的,其他的做法是非常不负责任的。由于规模是软件系统产品用户成本中如此大的一个......