【云原生 | 47】etcdctl客户端的使用方法详解

news2024/11/24 20:53:42

🍁博主简介
        🏅云计算领域优质创作者
        🏅2022年CSDN新星计划python赛道第一名

        🏅2022年CSDN原力计划优质作者
        🏅阿里云ACE认证高级工程师
        🏅阿里云开发者社区专家博主

💊交流社区:CSDN云计算交流社区欢迎您的加入!

使用etcdctl客户端

etcdctl是Etcd官方提供的命令行客户端,它支持一些基于HTTP API封装好的命令,供用户直接跟Etcd服务打交道,而无需基于HTTP API的方式。当然,这些命令跟HTTP API实际上是对应的,最终效果上并无不同之处。
某些场景下使用etcdctl将十分方便。例如用户需要对Etcd服务进行简单测试或者手动来修改数据库少量内容;也推荐在刚接触Etcd时通过 etcdctl命令来熟悉Etcd支持的相关功能。
Etcd项目二进制发行包中已经包含了etcdctl工具,没有的话,可以从github.com/coreos/etcd/releases手动下载。

etcdctl的命令格式为:

$ etcdctl [全局选项]命令[命令选项] [命令参数]

全局选项参数见如下表格

支持的命令大体上分为数据类操作和非数据类操作两类。
Etcd作为一个分布式数据库,类似ZooKeeper采用了类似文件目录的结
构,数据类操作基本围绕对文件(即某个键)或目录进行。大家可以对比
Linux的文件和目录操作命令,会发现两者之间的相似性。非数据类操作主
要是Etcd提供的系统配置、权限管理等。参见如下两个表格


1、数据类操作 

数据类操作围绕对键值和目录的CRUD(符合REST风格的一套操作:Create)完整生命周期的管理。

Etcd在键的组织上采用了层次化的空间结构(类似于文件系统中目录的 概念),用户指定的键可以为单独的名字,如testkey,此时实际上放在根目录/下面,也可以为指定目录结构,如cluster1/node2/testkey,则将创建相应的目录结构。

提示:

CRUD即Create、Read、Update、Delete,是符合REST风格的一套API操作规范。

1.1 set 

设置某个键的值为给定值。例如:

$ etcdctl set /testdir/testkey "Hello world"
Hello world

支持的选项包括:

        --ttl'0'                                            键值的超时时间(单位为秒),不配置(默认为0)则永不超时

        --swap-with-value value               若该键现在的值是value,则进行设置操作

        --swap-with-index'0'                     若该键现在的索引值是指定索引,则进行设置操作

注意:

--ttl选项十分有用。在分布式环境中,系统往往是不可靠的,在基于Etcd设计分布式锁的时候,可以通过超时时间避免出现发生死锁的情况。

1.2 get 

获取指定键的值。例如:
$ etcdctl set testkey hello
hello
$ etcdctl update testkey world
world

当键不存在时,则会报错。例如:

$ etcdctl get testkey2
Error: 100: Key not found (/testkey2)

支持的选项为—sort,对返回结果进行排序。

1.3 update 

当键存在时,更新值内容。例如:

$ etcdctl set testkey hello
hello
$ etcdctl update testkey world
world

当键不存在时,则会报错。例如:

$ etcdctl update testkey2 world
Error: 100: Key not found (/testkey2)
支持的选项为--ttl'0',超时时间(单位为秒),不配置(默认为0)则永不超时。

1.4 mk

如果给定的键不存在,则创建一个新的键值。例如: 

$ etcdctl mk /testdir/testkey "Hello world"
Hello world

当键存在的时候,执行该命令会报错,例如:

$ etcdctl set testkey "Hello world"
Hello world
$ ./etcdctl mk testkey "Hello world"
Error: 105: Key already exists (/testkey)
支持的选项为--ttl'0',超时时间(单位为秒),不配置(默认为0)则永不超时。

1.5 rm 

删除某个键值。例如:

$ etcdctl rm testkey

当键不存在时,则会报错。例如:

$ etcdctl rm testkey2
Error: 100: Key not found (/testkey2)
支持的选项为:
        --dir——如果键是个空目录或者是键值对则删除;
        --recursive——删除目录和所有子键;
        --with-value——检查现有的值是否匹配;
        --with-index'0'——检查现有的index是否匹配。

1.6 watch 

监测一个键值的变化,一旦键值发生更新,就会输出最新的值并退出。例如,用户更新testkey键值为Hello world。
$ etcdctl watch testkey
Hello world
支持的选项包括:
        --forever——一直监测,直到用户按`CTRL+C`退出;
        --after-index'0'——在指定index之前一直监测;
        --recursive——返回所有的键值和子键值。

1.7 exec-watch 

监测一个键值的变化,一旦键值发生更新,就执行给定命令。这个功能十分强大,很多时候可以用于实时根据键值更新本地服务的配置信息,并重新加载服务。可以实现分布式应用配置的自动分发。

例如,一旦检测到testkey键值被更新,则执行ls命令。

$ etcdctl exec-watch testkey -- sh -c 'ls'
default.etcd
Documentation
etcd
etcdctl
etcd-migrate
README-etcdctl.md
README.md
支持的选项包括:
        --after-index'0'——在指定index之前一直监测;
        --recursive——返回所有的键值和子键值。

1.8 ls 

列出目录(默认为根目录)下的键或者子目录,默认不显示子目录中内容。例如:
$ ./etcdctl set testkey 'hi'
hi
$ ./etcdctl set dir/test 'hello'
hello
$ ./etcdctl ls
/testkey
/dir
$ ./etcdctl ls dir
/dir/test

支持的选项包括:

        --sort——将输出结果排序
        --recursive——如果目录下有子目录,则递归输出其中的内容
        -p——对于输出为目录,在最后添加`/`进行区分

1.9 mkdir 

如果给定的键目录不存在,则创建一个新的键目录。例如:

$ etcdctl mkdir testdir

当键目录存在的时候,执行该命令会报错,例如:

$ etcdctl mkdir testdir
$ etcdctl mkdir testdir
Error: 105: Key already exists (/testdir)
支持的选项为--ttl'0',超时时间(单位为秒),不配置(默认为0)则永不超时。

1.10 rmdir 

删除一个空目录,或者键值对。若目录不空,会报错,例如:

$ etcdctl set /dir/testkey hi
hi
$ etcdctl rmdir /dir
Error: 108: Directory not empty (/dir)

1.11 setdir 

创建一个键目录,无论存在与否。实际上,目前版本当目录已经存在的时候会报错。例如:
$ etcdctl setdir /test/test
$ etcdctl ls --recursive
/test
/test/test
支持的选项为--ttl'0',超时时间(单位为秒),不配置(默认为0)则永不超时。

1.12 updatedir 

更新一个已经存在的目录的属性(目前只有存活时间),例如:

$ etcdctl mkdir /test/test --ttl 100
$ etcdctl updatedir /test/test --ttl 200
支持的选项为--ttl'0,存活时间(单位为秒),不配置(默认为0)则永不超时。

2、非数据类操作 

非数据类操作不直接对数据本身进行管理,而是负责围绕集群自身的一些配置。

2.1 backup 

备份Etcd的配置状态数据目录。
支持的选项包括:
        --data-dir——要进行备份的Etcd的数据存放目录;
        --backup-dir——备份数据到指定路径。
例如,备份默认配置的信息到当前路径下的tmp子目录:
$ etcdctl backup --data-dir default.etcd --backup-dir tmp

可以查看tmp目录下面多了一个member目录:

$ ls tmp/member
snap wal
其中,snap为快照目录,保存节点状态快照文件(注意这些快照文件定
期生成);wal保存了数据库预写日志信息。

注意:

预写日志要求数据库在发生实际提交前必须先将操作写入日志,可以保
障系统在崩溃后根据日志回复状态。

2.2 cluster-health 

查看Etcd集群的健康状态。例如:

$ etcdctl cluster-health
member ce2a822cea30bfca is healthy: got healthy result from http://localhost:2379
cluster is healthy
支持的选项包括--forever,每隔10秒钟检查一次,直到手动终止(通
过Ctrl+C命令)。

2.3 member 

通过list、add、remove等子命令列出、添加、删除Etcd实例到Etcd集
群中。
例如本地启动一个Etcd服务实例后,可以用如下命令进行查看默认的实
例成员:
$ etcdctl member list
ce2a822cea30bfca: name=default peerURLs=http://localhost:2380,http://localhost:
7001 clientURLs=http://localhost:2379,http://localhost:4001

2.4 import 

导入旧版本(v0.4.*)的快照文件到系统。
支持的选项包括:
        --snap——快照文件路径;
        --hidden'--hidden option--hidden option'——隐藏导入的键值空间信息;
        -c'10'——并发导入的客户端数。

例如,导入通过backup命令导出的快照文件:

$ etcdctl import --snap tmp/member/snap/0000000000000003-0000000000061aa8.snap
starting to import snapshot tmp/member/snap/0000000000000003-0000000000061aa8.
snap with 10 clients
entering dir: /
copying key: /key 1
finished importing 1 keys

2.5 user 

对用户进行管理,包括一系列子命令:

        add——添加一个用户;
        get——查询用户细节;
        list——列出所有用户;
        remove——删除用户;
        grant——添加用户到角色;
        revoke——删除用户角色;
        passwd——修改用户的密码。

默认情况下,需要先创建(启用)root用户作为etcd集群的最高权限管理员:

$ etcdctl user add root
New password:

创建一个testuser用户,会提示输入密码:

$ etcdctl user add testuser
New password:

分配某些已有角色给用户:

$ etcdctl user grant testuser -roles testrole

2.6 role 

对用户角色进行管理,包括一系列子命令:
        add——添加一个角色;
        get——查询角色细节;
        list——列出所有用户角色;
        remove——删除用户角色;
        grant——添加路径到角色控制,可以为read、write或者readwrite;
        revoke——删除某路径的用户角色信息。
默认带有root、guest两种角色,前者为全局最高权限,后者为不带验
证情况下的用户。

例如:

$ etcdctl role add testrole
$ etcdctl role grant testrole -path '/key/*' -read

2.7 auth 

是否启用访问验证。enable为启用,disable为禁用。
例如,在root用户创建后,启用认证:
$ etcdctl auth enable

  👑👑👑结束语👑👑👑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

后台基础权限框架搭建实现[木字楠博客]

文章目录1、项目整合SpringSecurity1.1、引入SpringSecurity依赖1.2、启动测试1.3、自定义实体类继承UserDetails1.4、自定义配制文件1.5、重写loadUserByUsername方法1.6、自定义匿名访问注解1.8、编写SpringSecurity配制类后台权限框架搭建:本项目权限主要依赖Spr…

Polynomial Round 2022 (Div. 1 + Div. 2, Rated, Prizes!) A-C

比赛链接 目录 A. Add Plus Minus Sign 题意: 思路: 代码: B. Coloring 题意: 思路: 代码: C. Ice and Fire 题意: 思路: 代码: A. Add Plus Minus Sign 题意…

半导体芯片制造过程可以用哪种测量仪器

近年来,面对持续高涨的芯片需求,半导体行业生产迎来了高难度挑战——对芯片工艺要求更精细,从5nm到3nm,甚至是2nm。“先进封装”的提出,是对技术的新要求,也是对封装工艺中材料和设备的全新考验。 芯片身上…

节点电力市场生产商的战略竞标:凸松弛方法(Matlab实现)

目录 1 电力市场 1.1 什么是电力市场 1.2 电力市场发展历程 1.3 对传统电力系统理论的挑战 2 节点电力市场生产商的战略竞标:凸松弛方法 2.1 简介 2 Matlab代码 1 电力市场 1.1 什么是电力市场 市场:商品交换(交换商品的过程称交易)关系的总和 …

pikachu靶场验证码绕过详解

今天继续给大家介绍渗透测试相关知识,本文主要内容是pikachu靶场验证码绕过详解。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对…

endo-BCN-PEG3-Biotin,endo-BCN三聚乙二醇-生物素

【中文名称】endo-BCN三聚乙二醇-生物素 【英文名称】 endo-BCN-PEG3-Biotin,BCN-PEG3-Biotin (endo) 【CAS号】1263166-92-2 【分子式】C29H46N4O7S 【分子量】594.77 【基团部分】BCN 【纯度标准】95% 【外观颜色】 白色固体 (具体由其分子量大小决定…

MyBatis学习 | 简介HelloWord

文章目录一、简介二、HelloWord2.1 环境搭建2.2 创建全局配置文件2.3 创建工具类2.4 创建数据库表和对应的JavaBean2.5 创建SQL映射文件2.6 非接口式与接口式编程2.6.1 非接口式编程2.6.2 接口式编程⭐2.7 简单总结学习地址🔗 https://www.bilibili.com/video/BV1mW…

动态规划问题——换钱的方法数

题目: 给定数组arr,arr中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim,代表要找的钱数,求换钱有多少种方法。 举例: arr [5, 10, 2…

【PCL1.11.0+win10+vs2019】环境配置/ 点云格式转换及可视化

文章目录一、安装1.1 下载PCL1.2 安装PCL1.3 安装OSGeo4W二、配置2.1 配置环境变量2.2 配置VS2019三、点云格式转换以及可视化参考一、安装 1.1 下载PCL 首先我们需要下载pcl1.11.0 ,这个版本与vs2019对应。 有两种下载方法:百度网盘、官网下载。二选一…

docker原理及服务编排

一、什么是docker Docker 是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目。它基于Google公司推出的Go语言实现。项目后来加入了Linux基金会,遵从了Apache 2.0协议,项目代码在GitHub上进行维护。 Docker 项…

【毕业设计_课程设计】基于Spark网易云音乐数据分析

文章目录0 项目说明1 系统模块2 分析内容3 界面展示4 项目工程0 项目说明 基于Spark网易云音乐数据分析 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 1 系统模块 包含爬虫,Scala代码,Spark,Hadoop,ElasticSearch,logstash,Flume…

基于ChatGPT实现微信智能机器人

ChatGPT近期以强大的对话和信息整合能力风靡全网,可以写代码、改论文、讲故事,几乎无所不能,这让人不禁有个大胆的想法,能否用他的对话模型把我们的微信打造成一个智能机器人,可以在与好友对话中给出意想不到的回应&am…

汇编语言笔记——接口技术与编程

文章目录传送门储存系统与技术材料高速储存器缓冲储存器(Cache)材料,局部性,访问方式Cache全相联映射Cache交换与一致性单核CPU一致性处理多核CPU的MESI协议主储存器(内存)主要技术指标容量带宽内存模组与内…

【JavaWeb】Servlet

Servlet简介 Servlet是sun公司开发动态web的一门技术Sun在这些API中提供一个接口叫做:Servlet,如果想开发一个Servlet程序,需要编写一个类,实现Servlet接口把开发好的Java类部署到web服务器中 把实现了Servlet接口的Java程序叫做…

【Anime.js】——Anime.js源码核心理解

一、Anime.js整体结构 Anime.js的强大之处在于代码量非常少,但功能却非常强大。让我们一起来探索Anime.js源码的核心吧~ Anime.js之所以能如此强大主要是因为它的代码结构设计的非常巧妙合理,所以我们想要掌握Anime.js的核心,首先我们要了解…

Linux内核基础篇——动态输出调试

文章目录配置内核编译选项debugfs文件系统挂载动态输出使用实际案例动态输出(dynamic print)是内核子系统开发者最喜欢的输出技术之一。 上篇说到printk调试,但printk是全局的,只能设置输出等级。而动态输出可以动态选择打开某个…

Tensorflow Serving部署推荐模型

Tensorflow Serving部署推荐模型 1、找到当前模型中定义的variables,并在此定义一个saver用于保存模型参数 def saveVariables(self):variables_dict {}variables_dict[self.user_embedding.op.name] self.user_embeddingvariables_dict[self.item_embedding.op…

【LeetCode】1971. 寻找图中是否存在路径

题目描述 有一个具有 n 个顶点的 双向 图,其中每个顶点标记从 0 到 n - 1(包含 0 和 n - 1)。图中的边用一个二维整数数组 edges 表示,其中 edges[i] [ui, vi] 表示顶点 ui 和顶点 vi 之间的双向边。 每个顶点对由 最多一条 边连…

犀牛插件开发-基础核心-技术概览-总体架构-教程

文章目录1.概述2.基础核心2.1.C Rhino 核心2.2.openNURBS2.3.C SDK3.C Stack3.1.C Plugins3.2.RhinoScript4.NET Stack4.1.C API4.2.NET Framework4.3.RhinoCommon4.4.Eto4.5.net插件4.6.Grasshopper组件4.7.Python脚本5.相关主题1.概述 《Rhinoceros》由许多层组成——用多种…

细说OA系统的繁荣发展

改革开放以来,科技发展突飞猛进,我们生活的方方面面都受到了巨大影响。随着信息化时代的到来,企业的办公方式也发生了巨大的改变,OA系统随之走进了大众的视野。细数这四十几年,OA办公系统已经由一个异想天开的想法变成…