我写了一个Go程序,它连接到etcd主机http://192.168.0.210:2379
和http://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正在自己的工作区上工作。任何想法为什么会这样?
答案 0 :(得分:1)
问题是我在客户端使用API v2,在etcdctl中使用v3。不同的API版本具有不同的键名称空间。在Go import go.etcd.io/etcd/clientv3