etcdctl
是由 etcd 提供的命令行工具,用于直接与 etcd 服务器交互。它提供了一系列命令来管理 etcd 集群,包括添加或删除成员、获取或设置值以及监控集群健康等。不同版本之间的具体选项和命令可能略有不同,但以下是 etcdctl
版本 3.5.9 中可用命令的概述。此版本遵循 API v3 语义。
下方会列举命令的使用方法,不同环境根据各自环境进行更改参数
通用用法
etcdctl <命令>
常用命令
-
member
add
- 向集群中添加成员list
- 列出集群中的所有成员remove
- 从集群中删除成员update
- 更新集群中的成员promote
- 提升集群中的非投票成员
-
endpoint
health
- 检查端点的健康状况status
- 打印端点的状态
-
alarm
list
- 列出所有警报disarm
- 解除警报
-
snapshot
save
- 将 etcd 节点后端快照存储到指定文件restore
- 将 etcd 成员快照恢复到 etcd 目录status
- 获取给定文件的后端快照状态
-
lease
grant
- 创建租约revoke
- 撤销租约keep-alive
- 保持租约活跃list
- 列出所有租约timetolive
- 获取租约的剩余 TTL
-
put - 将键值放入存储
-
get - 从存储中获取键的值
-
del - 从存储中删除键
-
txn - 在单个事务中处理所有请求
-
compaction - 压缩 etcd 键值存储中的事件历史
-
defrag - 碎片整理指定端点的 etcd 成员的存储
-
watch - 监视键或前缀上的事件流
-
version - 打印 etcdctl 的版本
-
check
- 检查 etcd 集群的配置和状态
perf
- 检查 etcd 集群的性能
标志和配置
--endpoints
- etcd 端点列表--cacert
- CA 证书文件的路径--cert
- 客户端证书文件的路径--key
- 客户端密钥文件的路径--write-out
- 设置输出格式(json
、protobuf
、table
、simple
)--peer-urls
- 对等 URL
设置 ETCDCTL 环境变量
为方便起见,避免对每个命令传递证书,您可以设置环境变量:
ETCDCTL_API
- API 版本(对于 etcdctl 3.x,默认为3
)ETCDCTL_CACERT
- CA 证书文件的路径ETCDCTL_CERT
- 客户端证书文件的路径ETCDCTL_KEY
- 客户端密钥文件的路径ETCDCTL_ENDPOINTS
- etcd 端点的逗号分隔列表
示例命令
1. 查看集群成员
列出集群中所有成员的详细信息。
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/path/to/ca.crt \
--cert=/path/to/client.crt \
--key=/path/to/client.key \
member list --write-out=table
2. 添加集群成员
向集群中添加新成员,此命令返回新成员的 ID 和其他信息。
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/path/to/ca.crt \
--cert=/path/to/client.crt \
--key=/path/to/client.key \
member add new-member-name --peer-urls=http://new-member-peer-url:2380
3. 更新集群成员
更新现有集群成员的对等 URL。
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/path/to/ca.crt \
--cert=/path/to/client.crt \
--key=/path/to/client.key \
member update memberID --peer-urls=http://new-member-peer-url:2380
4. 删除集群成员
从集群中移除成员。
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/path/to/ca.crt \
--cert=/path/to/client.crt \
--key=/path/to/client.key \
member remove memberID
5. 检查端点健康
检查集群中所有端点的健康状况。
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379,https://127.0.0.2:2379 \
--cacert=/path/to/ca.crt \
--cert=/path/to/client.crt \
--key=/path/to/client.key \
endpoint health
6. 获取键值
从 etcd 存储中获取键的值。
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/path/to/ca.crt \
--cert=/path/to/client.crt \
--key=/path/to/client.key \
get /path/to/key
7. 设置键值
在 etcd 存储中设置键的值。
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/path/to/ca.crt \
--cert=/path/to/client.crt \
--key=/path/to/client.key \
put /path/to/key "value"
8. 删除键值
从 etcd 存储中删除键。
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/path/to/ca.crt \
--cert=/path/to/client.crt \
--key=/path/to/client.key \
del /path/to/key
9. 创建和撤销租约
创建一个新租约,并使用该租约将键保持活跃状态。
# 创建租约
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/path/to/ca.crt \
--cert=/path/to/client.crt \
--key=/path/to/client.key \
lease grant 60
# 使用租约 ID 保持租约活跃
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/path/to/ca.crt \
--cert=/path/to/client.crt \
--key=/path/to/client.key \
lease keep-alive LEASE_ID