V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
inza9hi
V2EX  ›  Go 编程语言

请教一个 etcd 问题

  •  
  •   inza9hi · 3 天前 · 473 次点击

    楼主 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
    
    
    

    是我的理解有问题吗?

    1 条回复
    inza9hi
        1
    inza9hi  
    OP
       3 天前
    知道怎么回事了。
    export ETCDCTL_API=3
    这样才能生效。

    然后就可以了,原来 V2 和 V3 的数据差这么大
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1635 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 16:56 · PVG 00:56 · LAX 08:56 · JFK 11:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.