Go-клиент и утилита cli 'etcdctl', похоже, работают в разных рабочих пространствах, даже если они подключены к одним и тем же хостам - PullRequest
0 голосов
/ 19 сентября 2018

Я написал небольшую программу Go, которая подключается к хостам etcd http://192.168.0.210:2379 и 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 работает над собственной рабочей областью.Есть идеи, почему это происходит?

1 Ответ

0 голосов
/ 19 сентября 2018

Проблема заключалась в том, что я использовал API v2 для клиента и v3 для etcdctl.Разные версии API имеют разные ключевые пространства имен.Чтобы использовать клиент v3 в Go import go.etcd.io/etcd/clientv3

...