mirror of
				https://github.com/yeasy/docker_practice.git
				synced 2025-10-31 02:03:11 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			151 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| # 使用 etcdctl
 | ||
| 
 | ||
| `etcdctl` 是一个命令行客户端,它能提供一些简洁的命令,供用户直接跟 `etcd` 服务打交道,而无需基于 `HTTP API` 方式。这在某些情况下将很方便,例如用户对服务进行测试或者手动修改数据库内容。我们也推荐在刚接触 `etcd` 时通过 `etcdctl` 命令来熟悉相关的操作,这些操作跟 `HTTP API` 实际上是对应的。
 | ||
| 
 | ||
| `etcd` 项目二进制发行包中已经包含了 `etcdctl` 工具,没有的话,可以从 [github.com/etcd-io/etcd/releases](https://github.com/etcd-io/etcd/releases) 下载。
 | ||
| 
 | ||
| `etcdctl` 支持如下的命令,大体上分为数据库操作和非数据库操作两类,后面将分别进行解释。
 | ||
| 
 | ||
| ```
 | ||
| NAME:
 | ||
| 	etcdctl - A simple command line client for etcd3.
 | ||
| 
 | ||
| USAGE:
 | ||
| 	etcdctl
 | ||
| 
 | ||
| VERSION:
 | ||
| 	3.4.0
 | ||
| 
 | ||
| API VERSION:
 | ||
| 	3.4
 | ||
| 
 | ||
| 
 | ||
| COMMANDS:
 | ||
| 	get			Gets the key or a range of keys
 | ||
| 	put			Puts the given key into the store
 | ||
| 	del			Removes the specified key or range of keys [key, range_end)
 | ||
| 	txn			Txn processes all the requests in one transaction
 | ||
| 	compaction		Compacts the event history in etcd
 | ||
| 	alarm disarm		Disarms all alarms
 | ||
| 	alarm list		Lists all alarms
 | ||
| 	defrag			Defragments the storage of the etcd members with given endpoints
 | ||
| 	endpoint health		Checks the healthiness of endpoints specified in `--endpoints` flag
 | ||
| 	endpoint status		Prints out the status of endpoints specified in `--endpoints` flag
 | ||
| 	watch			Watches events stream on keys or prefixes
 | ||
| 	version			Prints the version of etcdctl
 | ||
| 	lease grant		Creates leases
 | ||
| 	lease revoke		Revokes leases
 | ||
| 	lease timetolive	Get lease information
 | ||
| 	lease keep-alive	Keeps leases alive (renew)
 | ||
| 	member add		Adds a member into the cluster
 | ||
| 	member remove		Removes a member from the cluster
 | ||
| 	member update		Updates a member in the cluster
 | ||
| 	member list		Lists all members in the cluster
 | ||
| 	snapshot save		Stores an etcd node backend snapshot to a given file
 | ||
| 	snapshot restore	Restores an etcd member snapshot to an etcd directory
 | ||
| 	snapshot status		Gets backend snapshot status of a given file
 | ||
| 	make-mirror		Makes a mirror at the destination etcd cluster
 | ||
| 	migrate			Migrates keys in a v2 store to a mvcc store
 | ||
| 	lock			Acquires a named lock
 | ||
| 	elect			Observes and participates in leader election
 | ||
| 	auth enable		Enables authentication
 | ||
| 	auth disable		Disables authentication
 | ||
| 	user add		Adds a new user
 | ||
| 	user delete		Deletes a user
 | ||
| 	user get		Gets detailed information of a user
 | ||
| 	user list		Lists all users
 | ||
| 	user passwd		Changes password of user
 | ||
| 	user grant-role		Grants a role to a user
 | ||
| 	user revoke-role	Revokes a role from a user
 | ||
| 	role add		Adds a new role
 | ||
| 	role delete		Deletes a role
 | ||
| 	role get		Gets detailed information of a role
 | ||
| 	role list		Lists all roles
 | ||
| 	role grant-permission	Grants a key to a role
 | ||
| 	role revoke-permission	Revokes a key from a role
 | ||
| 	check perf		Check the performance of the etcd cluster
 | ||
| 	help			Help about any command
 | ||
| 
 | ||
| OPTIONS:
 | ||
|       --cacert=""				verify certificates of TLS-enabled secure servers using this CA bundle
 | ||
|       --cert=""					identify secure client using this TLS certificate file
 | ||
|       --command-timeout=5s			timeout for short running command (excluding dial timeout)
 | ||
|       --debug[=false]				enable client-side debug logging
 | ||
|       --dial-timeout=2s				dial timeout for client connections
 | ||
|       --endpoints=[127.0.0.1:2379]		gRPC endpoints
 | ||
|       --hex[=false]				print byte strings as hex encoded strings
 | ||
|       --insecure-skip-tls-verify[=false]	skip server certificate verification
 | ||
|       --insecure-transport[=true]		disable transport security for client connections
 | ||
|       --key=""					identify secure client using this TLS key file
 | ||
|       --user=""					username[:password] for authentication (prompt if password is not supplied)
 | ||
|   -w, --write-out="simple"			set the output format (fields, json, protobuf, simple, table)
 | ||
| ```
 | ||
| 
 | ||
| ## 数据库操作
 | ||
| 
 | ||
| 数据库操作围绕对键值和目录的 CRUD (符合 REST 风格的一套操作:Create)完整生命周期的管理。
 | ||
| 
 | ||
| etcd 在键的组织上采用了层次化的空间结构(类似于文件系统中目录的概念),用户指定的键可以为单独的名字,如 `testkey`,此时实际上放在根目录 `/` 下面,也可以为指定目录结构,如 `cluster1/node2/testkey`,则将创建相应的目录结构。
 | ||
| 
 | ||
| >注:CRUD 即 Create, Read, Update, Delete,是符合 REST 风格的一套 API 操作。
 | ||
| 
 | ||
| ### put
 | ||
| 
 | ||
| ```bash
 | ||
| $ etcdctl put /testdir/testkey "Hello world"
 | ||
| OK
 | ||
| ```
 | ||
| 
 | ||
| ### get
 | ||
| 
 | ||
| 获取指定键的值。例如
 | ||
| 
 | ||
| ```bash
 | ||
| $ etcdctl put testkey hello
 | ||
| OK
 | ||
| $ etcdctl get testkey
 | ||
| testkey
 | ||
| hello
 | ||
| ```
 | ||
| 
 | ||
| 支持的选项为
 | ||
| 
 | ||
| `--sort`	对结果进行排序
 | ||
| 
 | ||
| `--consistent` 将请求发给主节点,保证获取内容的一致性
 | ||
| 
 | ||
| ### del
 | ||
| 
 | ||
| 删除某个键值。例如
 | ||
| 
 | ||
| ```bash
 | ||
| $ etcdctl del testkey
 | ||
| 1
 | ||
| ```
 | ||
| 
 | ||
| ## 非数据库操作
 | ||
| 
 | ||
| ### watch
 | ||
| 
 | ||
| 监测一个键值的变化,一旦键值发生更新,就会输出最新的值。
 | ||
| 
 | ||
| 例如,用户更新 `testkey` 键值为 `Hello world`。
 | ||
| 
 | ||
| ```bash
 | ||
| $ etcdctl watch testkey
 | ||
| PUT
 | ||
| testkey
 | ||
| 2
 | ||
| ```
 | ||
| 
 | ||
| ### member
 | ||
| 
 | ||
| 通过 `list`、`add`、`update`、`remove` 命令列出、添加、更新、删除 etcd 实例到 etcd 集群中。
 | ||
| 
 | ||
| 例如本地启动一个 `etcd` 服务实例后,可以用如下命令进行查看。
 | ||
| 
 | ||
| ```bash
 | ||
| $ etcdctl member list
 | ||
| 422a74f03b622fef, started, node1, http://172.16.238.100:2380, http://172.16.238.100:23
 | ||
| ```
 |