Go 客户端和 'etcdctl' cli 实用工具似乎在不同的工作区上工作,即使它们连接到相同的主机

The Go client and 'etcdctl' cli utility tool seem to be working on different workspaces even though they are connected to the same hosts

我写了一个连接到 etcd 主机 http://192.168.0.210:2379http://192.168.0.211:2379 的小 Go 程序,设置一个键 /foobar 然后读取它并打印结果.那部分工作正常:

bar &{get {Key: /foo, CreatedIndex: 6, ModifiedIndex: 6, TTL: 0} <nil> 6 67b31bc85ffd6d2b} <nil>

也可以使用 HTTP GET 请求读取密钥

{
    "action": "get",
    "node": {
        "key": "/foo",
        "value": "bar",
        "modifiedIndex": 6,
        "createdIndex": 6
    }
}

但是当我使用 ectdctl 时 returns 什么都没有,就好像密钥不存在一样

./etcdctl --endpoints=192.168.0.210:2379,192.168.0.211:2379 get /foo

如果我改为使用 etcdctl 设置 /foo,那么它可以正常工作并正确读取密钥。看起来 etcdctl 正在处理它自己的工作空间。知道为什么会这样吗?

问题是我对客户端使用 API v2,对 etcdctl 使用 v3。不同的 API 版本具有不同的键命名空间。在 Go 中使用客户端 v3 import go.etcd.io/etcd/clientv3