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

时间:2018-09-19 10:29:17

标签: go etcd

我写了一个Go程序,它连接到etcd主机http://192.168.0.210:2379http://192.168.0.211:2379,将密钥/foo设置为bar,然后读取它并打印结果。那部分工作正常:

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时,它什么也不返回,就好像密钥不存在

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

如果我改用etcdctl设置/foo,则它将起作用并正确读取密钥。看起来etcdctl正在自己的工作区上工作。任何想法为什么会这样?

1 个答案:

答案 0 :(得分:1)

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

中使用客户端v3