etcdctl 简单使用

etcdctl 是用于与 etcd 服务交互的官方命令行客户端工具。etcd 是一个高可用的分布式键值存储系统,广泛用于服务发现、配置管理和分布式协调。
使用 etcdctl 的过程主要包括安装工具、连接到 etcd 集群,以及执行各种命令来管理键值对、监控变化或管理集群成员。
下面是一个详细的使用指南:

第一步:安装 etcdctl

etcdctl 通常与 etcd 服务一起打包下载。你需要从 etcd 的 GitHub Release 页面下载适用于你操作系统的二进制文件包。

  1. 访问 etcd GitHub Releases。
  2. 下载最新的稳定版本(例如 etcd-v3.5.x-windows-amd64.zip 或 etcd-v3.5.x-linux-amd64.tar.gz)。
  3. 解压下载的文件,将 etcdctl 可执行文件(在 Windows 上是 etcdctl.exe)所在的目录添加到系统的 PATH 环境变量中,以便可以在任何位置运行该命令。

第二步:连接到 etcd 集群

在使用 etcdctl 之前,你需要知道你的 etcd 服务器运行在哪里。etcdctl 默认连接到 http://127.0.0.1:2379
如果你的 etcd 服务运行在其他地址或端口,你需要使用 --endpoints 标志来指定。

# 连接到本地默认地址
etcdctl get /some/key

# 连接到远程集群的多个节点
etcdctl --endpoints=http://192.168.1.10:2379,http://192.168.1.11:2379 get /some/key

第三步:基本键值对操作 (KV Operations)**

etcdctl 的主要用途是存储和检索数据。etcd 在 v3 版本后,其 API 有了很大变化,命令也分为 v2 和 v3。现在主流使用 v3 API。

  1. 存储键值对 (Put)
    使用 put 命令将一个值存储到一个键中。
# 语法: etcdctl put <key> <value>
etcdctl put /config/app_name "MyApp"
etcdctl put /services/frontend/port "8080"
  1. 获取键值对 (Get)
    使用 get 命令检索键对应的值。
# 语法: etcdctl get <key>
etcdctl get /config/app_name
# 输出示例:
# /config/app_name
# MyApp
  1. 获取指定前缀的所有键 (Get with prefix)
    使用 --prefix 标志可以获取以指定字符串开头的所有键值对。
# 获取 /services/ 下的所有键值对
etcdctl get /services/ --prefix
  1. 删除键值对 (Del)
    使用 del 命令删除指定的键。
etcdctl del /config/app_name
  1. 删除指定前缀的所有键 (Del with prefix)
    使用 --prefix 标志删除所有匹配的键。
etcdctl del /services/ --prefix

第四步:监控和观察变化 (Watch)

etcd 的一个核心功能是实时监控键的变化。使用 watch 命令可以实现这一点。

# 监听单个键的变化
etcdctl watch /services/frontend/port

# 监听前缀下的所有变化 (在新窗口或后台运行此命令)
etcdctl watch /services/ --prefix

当你运行 watch 命令后,它会一直保持连接并等待。在另一个终端窗口执行 put 或 del 操作,你会立即在 watch 窗口看到变化通知。

第五步:租约管理 (Lease Management)

在分布式系统中,租约 (Lease) 对于实现心跳和领导者选举至关重要。
授予租约 (Grant): 创建一个有时限的租约(例如 30 秒)。

etcdctl lease grant 30
# 输出示例:lease 694d0c9f5d1c4a00 granted with TTL(30s)

将键绑定到租约 (Put with lease): 在存储数据时指定租约 ID。

etcdctl put /nodes/node1 "online" --lease=694d0c9f5d1c4a00

如果 30 秒内没有续租,/nodes/node1 这个键将自动过期并被删除。
保持租约存活 (Keep-alive): 保持租约不过期。

etcdctl lease keep-alive 694d0c9f5d1c4a00

第六步:集群管理 (Cluster Management)

etcdctl 还可以用于查看和管理 etcd 集群的状态。
查看集群成员列表:

etcdctl member list

查看集群健康状态:

etcdctl endpoint health

查看存储大小:

etcdctl endpoint status --endpoints=http://127.0.0.1:2379

总结:常用命令速查

screenshot_2025-11-25_14-51-37

posted @ 2025-11-25 14:52  洪光  阅读(0)  评论(0)    收藏  举报