etcdctl
概述
参考:
Syntax(语法)
etcdctl [GlobalOptions] COMMAND [CommandOptions] [Arguments…]
使用说明:
- export ETCDCTL_API=3 使用该命令使得 etcdctl 通过 v3 版本来进行操作
- 如果在 etcd 的配置文件中的 Security 段落,开启了验证证书,则在使用命令时,需要使用–cert、–key、–cacert 选项来指定验证所需证书,否则无法操纵服务器
- v2 版本中使用如下方式 etcdctl –key-file=/etc/kubernetes/pki/etcd/peer.key –cert-file=/etc/kubernetes/pki/etcd/peer.crt –ca-file=/etc/kubernetes/pki/etcd/ca.crt –endpoints=“https://IP:PORT” COMMAND
- v3 版本中使用如下方式 etcdctl –key=/etc/kubernetes/pki/etcd/peer.key –cert=/etc/kubernetes/pki/etcd/peer.crt –cacert=/etc/kubernetes/pki/etcd/ca.crt –endpoints=“https://IP:PORT” COMMAND
- 在下面的 EXAMPLE 则不再输入认证相关参数,以便查阅方便。但是实际使用中需要使用,否则无法连接 etcd 服务端
GLOBAL OPTIONS
- –cacert=/PATH/FILE # 使用此 CA 包验证启用 TLS 的安全服务器的证书。即 etcd 的 ca,用该 ca 来验证 cert 选项中提供的证书是否正确
- –cert=/PATH/FILE# 使用指定的 TLS 证书文件鉴定客户端是否安全。即 etcd 的 peer 证书,peer 证书对于 etcdctl 来说就是与它交互的服务端的证书
- –key=/PATH/FILE # 使用指定的 TLS 证书的密钥文件鉴定客户端是否安全。即 etcd 的 peer 证书的私钥
- –endpoints=[IP1:PORT1,IP2:PORT2,…..] # 指定后端服务器的 IP 和 Port
- –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
- –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
- –user="" # username[:password] for authentication (prompt if password is not supplied)
- -w, –write-out=“simple” # 指定输出内容的格式,格式可有有这么几个 (fields, json, protobuf, simple, table)(一般常用 json)
- Note:输出的 json 格式只有一行,可以使用 jq 程序来对 json 进行格式化,可以把每个{}分行,以便人类阅读,下图为样例
基本命令
get - 获取键或者键的范围。Gets the key or a range of keys
etcdctl get [OPTIONS] [Range-End]
OPTIONS
- –consistency=“l” Linearizable(l) or Serializable(s)
- –from-key[=false] Get keys that are greater than or equal to the given key using byte compare
- –keys-only[=false] # 仅获取键而不显示该键所对应的值
- –limit=0 # Maximum number of results
- –order="" # Order of results; ASCEND or DESCEND (ASCEND by default)
- –prefix[=false] # 获取 KEY 前缀匹配到的所有的键。前缀就是键名的从开头开始的的字符串。可以指定
''
匹配所有 KEY - –print-value-only[=false] Only write values when using the “simple” output format
- –rev=0 Specify the kv revision
- –sort-by="" Sort target; CREATE, KEY, MODIFY, VALUE, or VERSION
EXAMPLE
- etcdctl get –prefix –keys-only ’’ # 获取所有键,并且只显示键名。
- etcdctl get –prefix –keys-only / # 获取以
/
开头的所有键,并且只显示键名。 - etcdv3 get /registry/events/kube-system/kube-flannel-ds-amd64-47cnw.15966b23d2027e45 -w=json | jq . # 以 json 格式输出指定键的值,并使用 jq 命令对 json 内容进行格式化输出以便人类阅读
put # 写入一个 key/value 到 etcd 存储中。
del # 删除指定的 key 或一个范围的 keys
txn Txn processes all the requests in one transaction
compaction Compacts the event history in etcd
alarm - 告警相关命令
alerm disarm - 解除所有告警
alarm list - 列出 etcd 中所有的告警
check - 检查 etcd 的性能
check datascale
检查在给定的 endpoint 上为不同工作负载保持数据时的内存使用情况。
check perf - 检查 etcd 的性能
检查 60 秒的 etcd 群集性能。经常运行检查性能可以创建一个较大的键空间历史记录,可以使用–auto-compact 和–auto-defrag 选项(如下所述)对其进行自动压缩和碎片整理。
注意:性能检查会产生碎片,推荐性能测试后,执行 etcdctl defrag
命令清理碎片
OPTIONS
- –load # 性能检查的工作负载模型。可接受的工作负载:s(small 小),m(medium 中),l(large 大),xl(x 大)
defrag
defrag 命令可以对 etcd 成员的存储空间进行碎片整理,etcd 成员目标可以是正在运行,也可以是未运行的,当处理未运行的数据库碎片时,指定存储路径即可。
EXAMPLE
在 Etcd 当前节点成员运行碎片整理操作
$ etcdctl defrag
Finished defragmenting etcd member[127.0.0.1:2379]
在集群中的所有成员运行碎片整理操作:
$ etcdctl defrag --cluster
Finished defragmenting etcd member[http://127.0.0.1:2379]
Finished defragmenting etcd member[http://127.0.0.1:22379]
Finished defragmenting etcd member[http://127.0.0.1:32379]
在 Etcd 未运行时,对数据存储目录执行碎片整理操作:
etcdctl defrag --data-dir <PathToEtcdDataDir>
endpoint - 用于查询 etcd 中各个端点的信息
endpoint health # Checks the healthiness of endpoints specified in --endpoints
flag
endpoint status # 打印出 –endpoints 标志中指定的 endpoints 状态
endpoint hashkv # Prints the KV history hash for each endpoint in –endpoints
lease - 相关命令
lease grant Creates leases
lease revoke Revokes leases
lease timetolive Get lease information
lease keep-alive Keeps leases alive (renew)
member - 管理 etcd 集群中的成员
member add # 将新成员作为新对等方引入 etcd 集群中。
member remove # 从参与集群共识的成员中删除 etcd 集群的成员。
member update # 为 etcd 集群中现有成员设置对等 URL。
member list # 列出集群中的所有成员
EXAMPLE
- etcdctl member list # 列出 etcd 集群中的成员
- etcdctl member list –write-out=json | jq . # 通过 json 可以看到 etcd 集群中,哪个是节点是 leader
snapshot - 快照相关命令
snapshot 相关的命令可以让将 etcd 的数据进行备份与恢复
etcdctl snapshot save # 存储一个 etcd 节点后端快照到指定文件。Stores an etcd node backend snapshot to a given file EXAMPLE
- etcdctl snapshot save snapshot.db # 备份指定后端节点的 etcd 数据到 snapshot.db 文件
etcdctl snapshot restore [OPTIONS] # 恢复一个 etcd 成员的快照到一个 etcd 的文件夹中。 OPTIONS
- –data-dir=/PATH/FILE# 把指定的路径作为 snapshot 文件的恢复目录,会把数据写到指定的目录下。Path to the data directory
EXAMPLE
- etcdctl snapshot restore snapshot.db –data-dir=/var/lib/etcd/ # 从 snapshot.db 文件中恢复数据到/var/lib/etcd/目录下
etcdctl snapshot status # 取指定文件的后端快照状态。Gets backend snapshot status of a given file EXAMPLE
- etcdv3 snapshot status snapshot.db # 获取 snapshot.db 的状态,包括键/值对有多少,占多少空间
其他
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 # etcd 用户相关的命令
role # etcd 的 role 相关的命令
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
watch Watches events stream on keys or prefixes
反馈
此页是否对你有帮助?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.