请教一个 etcd 问题

4 天前
 inza9hi

楼主 Go 和 Etcd 都不是很熟,用程序可以读 etcd 的配置,但是 etcdctl 就有问题。

详情如下:

一个 Go/GPRC 服务注册到 etcd 里面 如果用 Go/JAVA 去读,类似下面,是没问题的

cli, err := clientv3.New(clientv3.Config{
		Endpoints:   endpoints,
		DialTimeout: 5 * time.Second,
	})
	if err != nil {
		// handle error!
	}
	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
	defer cancel()
	//resp, err := cli.Put(ctx, "sample_key", "sample_value")
	resp, err := cli.Get(ctx, "/api/v1.0/", clientv3.WithPrefix())

但是如果用 etcdctl 就读不出

etcdctl --version
etcdctl version: 3.3.13
API version: 2

因为之前配置了 SSL ,所以要加上相关的证书之类

 ETCDCTL_API=3
etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem  --endpoints=XXXXX  ls /api/v1.0/

直接报错:

Error:  100: Key not found (/api) [293]

直接 etcdctl ls:

/discovery
/jwnicrsevxblovcfybibmzlmqsgyxgeh
/terrmiilhczjihcdhbvsvusssss


是我的理解有问题吗?

525 次点击
所在节点    Go 编程语言
1 条回复
inza9hi
4 天前
知道怎么回事了。
export ETCDCTL_API=3
这样才能生效。

然后就可以了,原来 V2 和 V3 的数据差这么大

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1101697

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX