猿问

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

http://192.168.0.210:2379我写了一个连接到etcd主机的小 Go 程序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

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


aluckdog
浏览 87回答 1
1回答

慕神8447489

问题是我对客户端使用 API v2,对 etcdctl 使用 v3。不同的 API 版本具有不同的键命名空间。在 Go 导入中使用客户端 v3go.etcd.io/etcd/clientv3
随时随地看视频慕课网APP

相关分类

Go
我要回答