docker_practice/etcd/etcdctl-v2.md

282 lines
8.0 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 使 etcdctl v2
`etcdctl` `etcd` `HTTP API` 便 `etcd` `etcdctl` `HTTP API`
`etcd` `etcdctl` [github.com/etcd-io/etcd/releases](https://github.com/etcd-io/etcd/releases) 下载。
`etcdctl`
```
$ etcdctl -h
NAME:
etcdctl - A simple command line client for etcd.
USAGE:
etcdctl [global options] command [command options] [arguments...]
VERSION:
2.0.0-rc.1
COMMANDS:
backup backup an etcd directory
mk make a new key with a given value
mkdir make a new directory
rm remove a key
rmdir removes the key if it is an empty directory or a key-value pair
get retrieve the value of a key
ls retrieve a directory
set set the value of a key
setdir create a new or existing directory
update update an existing key with a given value
updatedir update an existing directory
watch watch a key for changes
exec-watch watch a key for changes and exec an executable
member member add, remove and list subcommands
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--debug output cURL commands which can be used to reproduce the request
--no-sync don't synchronize cluster information before sending request
--output, -o 'simple' output response in the given format (`simple` or `json`)
--peers, -C a comma-delimited list of machine addresses in the cluster (default: "127.0.0.1:4001")
--cert-file identify HTTPS client using this SSL certificate file
--key-file identify HTTPS client using this SSL key file
--ca-file verify certificates of HTTPS-enabled servers using this CA bundle
--help, -h show help
--version, -v print the version
```
##
CRUD REST Create
etcd `testkey` `/` `cluster1/node2/testkey`
*CRUD Create, Read, Update, Delete REST API *
### set
```bash
$ etcdctl set /testdir/testkey "Hello world"
Hello world
```
```bash
--ttl '0' 该键值的超时时间(单位为秒),不配置(默认为 0则永不超时
--swap-with-value value 若该键现在的值是 value则进行设置操作
--swap-with-index '0' 若该键现在的索引值是指定索引,则进行设置操作
```
### get
```bash
$ etcdctl set testkey hello
hello
$ etcdctl update testkey world
world
```
```bash
$ etcdctl get testkey2
Error: 100: Key not found (/testkey2) [1]
```
```bash
--sort 对结果进行排序
--consistent 将请求发给主节点,保证获取内容的一致性
```
### update
```bash
$ etcdctl set testkey hello
hello
$ etcdctl update testkey world
world
```
```bash
$ etcdctl update testkey2 world
Error: 100: Key not found (/testkey2) [1]
```
```bash
--ttl '0' 超时时间(单位为秒),不配置(默认为 0则永不超时
```
### rm
```bash
$ etcdctl rm testkey
```
```bash
$ etcdctl rm testkey2
Error: 100: Key not found (/testkey2) [8]
```
```bash
--dir 如果键是个空目录或者键值对则删除
--recursive 删除目录和所有子键
--with-value 检查现有的值是否匹配
--with-index '0' 检查现有的 index 是否匹配
```
### mk
```bash
$ etcdctl mk /testdir/testkey "Hello world"
Hello world
```
```bash
$ etcdctl set testkey "Hello world"
Hello world
$ ./etcdctl mk testkey "Hello world"
Error: 105: Key already exists (/testkey) [2]
```
```bash
--ttl '0' 超时时间(单位为秒),不配置(默认为 0则永不超时
```
### mkdir
```bash
$ etcdctl mkdir testdir
```
```bash
$ etcdctl mkdir testdir
$ etcdctl mkdir testdir
Error: 105: Key already exists (/testdir) [7]
```
```bash
--ttl '0' 超时时间(单位为秒),不配置(默认为 0则永不超时
```
### setdir
```bash
--ttl '0' 超时时间(单位为秒),不配置(默认为 0则永不超时
```
### updatedir
```bash
--ttl '0' 超时时间(单位为秒),不配置(默认为 0则永不超时
```
### rmdir
```bash
$ etcdctl set /dir/testkey hi
hi
$ etcdctl rmdir /dir
Error: 108: Directory not empty (/dir) [13]
```
### ls
```bash
$ ./etcdctl set testkey 'hi'
hi
$ ./etcdctl set dir/test 'hello'
hello
$ ./etcdctl ls
/testkey
/dir
$ ./etcdctl ls dir
/dir/test
```
```bash
--sort 将输出结果排序
--recursive 如果目录下有子目录,则递归输出其中的内容
-p 对于输出为目录,在最后添加 `/` 进行区分
```
##
### backup
etcd
```bash
--data-dir etcd 的数据目录
--backup-dir 备份到指定路径
```
### watch
退
testkey Hello world
```bash
$ etcdctl watch testkey
Hello world
```
```bash
--forever 一直监测,直到用户按 `CTRL+C` 退出
--after-index '0' 在指定 index 之前一直监测
--recursive 返回所有的键值和子键值
```
### exec-watch
testkey
```bash
$ etcdctl exec-watch testkey -- sh -c 'ls'
default.etcd
Documentation
etcd
etcdctl
etcd-migrate
README-etcdctl.md
README.md
```
```bash
--after-index '0' 在指定 index 之前一直监测
--recursive 返回所有的键值和子键值
```
### member
listaddremove etcd etcd
etcd
```bash
$ etcdctl member list
ce2a822cea30bfca: name=default peerURLs=http://localhost:2380,http://localhost:7001 clientURLs=http://localhost:2379,http://localhost:4001
```
##
* `--debug` cURL
* `--no-sync`
* `--output, -o 'simple'` (`simple` `json` json)
* `--peers, -C` (: "127.0.0.1:4001")
* `--cert-file` HTTPS 使 SSL
* `--key-file` HTTPS 使 SSL
* `--ca-file` 使 HTTPS 使 CA
* `--help, -h`
* `--version, -v`