我是靠谱客的博主 俊秀冬瓜,最近开发中收集的这篇文章主要介绍golang etcd v3 client设置的key etcdctl访问不到,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

现象

golang 连接etcd v3 时,我发现一个诡异的事情。etcd v3 golang api设置的值,使用etcdctl 获取不到。-_-|||

在 etcd2 中,各个 key 是以层次结构存在,而在 etcd3 中这个就变成了平级模型,但为了保证兼容性也保持了层次结构的方式。

使用etcd v3 golang client api 设置key:

ctx, cancel := context.WithTimeout(context.Background(), timeout)
resp, err := cli.Put(ctx, "cicd-dev-test", "sample_value")
cancel()
if err != nil {
    // handle error!
}
// use the response

但是使用etcdctl访问不到。

/ #  etcdctl get "cicd-dev-test"
Error:  100: Key not found (/cicd-dev-test) [7]

原因

我输入etcdctl注意到一行日志:

/ # etcdctl
NAME:
   etcdctl - A simple command line client for etcd.

WARNING:
   Environment variable ETCDCTL_API is not set; defaults to etcdctl v2.
   Set environment variable ETCDCTL_API=3 to use v3 API or ETCDCTL_API=2 to use v2 API.

原来v2 API和v3 API使用的不是同一个数据源。

/ # export ETCDCTL_API=3
/ # etcdctl get cicd-dev-test
cicd-dev-test
{"name":"test","namespace":"cicd-dev","replica":1,"artifact":"cicd-dev/basic.tar.gz","cmd":"java -jar basic.jar","Status":"","RunningProcess":null}

这下可以访问到了!

最后

以上就是俊秀冬瓜为你收集整理的golang etcd v3 client设置的key etcdctl访问不到的全部内容,希望文章能够帮你解决golang etcd v3 client设置的key etcdctl访问不到所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部