概述
现象
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访问不到所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复