etcd API 概览
etcd
API 主要分为以下几类:
API | 作用 |
---|---|
KV | 处理键值对的存取(Put 、Get 、Delete ) |
Watch | 监听 etcd 中键值的变化 |
Lease | 通过租约(Lease)设置数据的过期时间 |
Txn(事务) | 事务操作,支持多个操作的原子执行 |
Auth | 用户权限管理(添加用户、角色、授权等) |
Cluster | 管理 etcd 集群节点 |
Maintenance | 维护 etcd (查看状态、快照、清理数据等) |
Lock | 分布式锁 |
在 etcd 中,kv
(键值操作)、watch
(监听)、lease
(租约)和 txn
(事务)是核心功能。以下是这些功能的 etcd 原生命令 的详细讲解,包括命令的用法和示例。
1. KV(键值操作)
1.1 设置键值对 (put
)
用于设置或更新键值对。
命令格式
etcdctl put <key> <value> [选项]
示例
etcdctl put /config/database/host localhost
- 设置键
/config/database/host
的值为localhost
。
常用选项
--lease
:为键绑定租约。etcdctl put /config/database/host localhost --lease=1234abcd
1.2 获取键值对 (get
)
用于获取键的值。
命令格式
etcdctl get <key> [选项]
示例
etcdctl get /config/database/host
- 获取键
/config/database/host
的值。
常用选项
--prefix
:获取指定前缀的所有键。etcdctl get /config/ --prefix
--limit
:限制返回的键值对数量。etcdctl get /config/ --prefix --limit=2
1.3 删除键值对 (del
)
用于删除键值对。
命令格式
etcdctl del <key> [选项]
示例
etcdctl del /config/database/host
- 删除键
/config/database/host
。
常用选项
--prefix
:删除指定前缀的所有键。etcdctl del /config/ --prefix
2. Watch(监听)
2.1 监听键的变化 (watch
)
用于监听键的变化。
命令格式
etcdctl watch <key> [选项]
示例
etcdctl watch /config/database/host
- 监听键
/config/database/host
的变化。
常用选项
--prefix
:监听指定前缀的所有键。etcdctl watch /config/ --prefix
3. Lease(租约)
3.1 创建租约 (lease grant
)
用于创建一个租约。
命令格式
etcdctl lease grant <TTL>
示例
etcdctl lease grant 60
- 创建一个 TTL 为 60 秒的租约。
输出
lease 1234abcd granted with TTL(60s)
1234abcd
是租约 ID。
3.2 绑定键到租约 (put --lease
)
将键绑定到租约。
示例
etcdctl put /config/database/host localhost --lease=1234abcd
- 将键
/config/database/host
绑定到租约1234abcd
。
3.3 续约 (lease keep-alive
)
用于续约,防止租约过期。
命令格式
etcdctl lease keep-alive <lease_id>
示例
etcdctl lease keep-alive 1234abcd
- 续约租约
1234abcd
。
3.4 撤销租约 (lease revoke
)
用于撤销租约,绑定的键会被删除。
命令格式
etcdctl lease revoke <lease_id>
示例
etcdctl lease revoke 1234abcd
- 撤销租约
1234abcd
。
4. Txn(事务)
4.1 执行事务 (txn
)
用于执行事务操作。
命令格式
etcdctl txn [选项]
示例 也可以etcdctl txn -i 启动交互式命令行
etcdctl txn <<EOF
compare:
value("/config/database/host") = "localhost"
success:
put /config/database/host "127.0.0.1"
failure:
put /config/database/host "unknown"
EOF
- 如果
/config/database/host
的值是localhost
,则将其改为127.0.0.1
,否则改为unknown
。
5. 综合示例
5.1 设置键值对并绑定租约
# 创建租约
etcdctl lease grant 60
# 绑定键到租约
etcdctl put /config/database/host localhost --lease=1234abcd
5.2 监听键的变化
# 监听键
etcdctl watch /config/database/host
5.3 执行事务
# 事务操作
etcdctl txn <<EOF
compare:
value("/config/database/host") = "localhost"
success:
put /config/database/host "127.0.0.1"
failure:
put /config/database/host "unknown"
EOF
6. 总结
功能 | 命令 | 用途 | 示例 |
---|---|---|---|
KV | put | 设置键值对 | etcdctl put /key value |
get | 获取键值对 | etcdctl get /key | |
del | 删除键值对 | etcdctl del /key | |
Watch | watch | 监听键的变化 | etcdctl watch /key |
Lease | lease grant | 创建租约 | etcdctl lease grant 60 |
put --lease | 绑定键到租约 | etcdctl put /key value --lease=1234abcd | |
lease keep-alive | 续约 | etcdctl lease keep-alive 1234abcd | |
lease revoke | 撤销租约 | etcdctl lease revoke 1234abcd | |
Txn | txn | 执行事务 | etcdctl txn <事务条件> |
https://github.com/0voice