【问题标题】:etcd v3 API unavailableetcd v3 API 不可用
【发布时间】:2019-02-20 14:20:34
【问题描述】:

我正在尝试以 etcd 作为后端来部署 CoreDNS。我已经完成了 etcd 和 CoreDNS 的大部分配置,但我正在尝试为开发人员记录如何将记录推送到 CoreDNS 的 etcd。

阅读了所有的 etcd v3 文档,从 etcd v2 中的 v2 API 到 etcd v3 中的 v3 API 发生了变化。有多个页面引用了使用 URL 进行的 API 调用,例如:

curl -L http://localhost:2379/v3beta/kv/put \
  -X POST -d '{"key": "Zm9v", "value": "YmFy"}'

我尝试了http://IP:2379/[v3alpha | 的多种组合v3beta | v3]/kv/put 我总是得到一个 not found 或 404 not found。

这很好用:

curl http://IPADDRESS:2379/v2/keys/test/local/test -XPUT -d '{"host":"IPADDRESS","ttl":60}'

但这不是:

curl http://IPADDRESS:2379/[v3alpha | v3beta | v3]/keys/test/local/test -XPUT -d '{"host":"IPADDRESS","ttl":60}'

我在文档中遗漏了什么吗?

我正在运行 etcd v 3.3.12。

【问题讨论】:

  • 您要部署哪个特定版本?
  • 更大的问题:v3 API 基于 gRPC,不再是 JSON/restful; curl 不再是使用它的首选方式。您所指的示例是使用 grpc-gateway 代理服务器,但这并不理想(并且需要您实际运行该服务;显示您如何进行安装的详细信息会有所帮助,这样我们就可以确保软件正在运行)。
  • 打算将其包含在我的帖子中。 etcd 的版本是 3.3.12。我正在从提供的最新 Linux 二进制文件运行 etcd。不是自己建造的。 @CharlesDuffy,您具体需要哪些详细信息?它已部署,我已经能够使用 v2 URL 成功测试。 v3 URL 不像记录的那样工作。
  • 我也遇到过这个问题,多次修改etcd.conf后,我发现如果etcd在没有--config-file的情况下启动,v3 rest api可以正常工作。但是如果它以--config-file 开头,即使指定了一个空文件,v3 rest api 也将不起作用。很奇怪。

标签: kubernetes etcd coredns


【解决方案1】:

查了etcd源码,终于找到了这个issue的RC。在 etcd 3.3.0 中,如果 etcd 从 yaml 配置文件加载配置,则配置标志“enable-grpc-gateway”的默认值为 false,但如果 etcd 从命令行加载配置标志,则默认值为 true。所以在你的 etcd 配置文件中添加下面的行可以解决这个问题。

enable-grpc-gateway: true

我试过etcd 3.3.13,这个版本已经修复了。

【讨论】:

    猜你喜欢
    • 2018-10-19
    • 1970-01-01
    • 2015-07-27
    • 2019-10-25
    • 2018-01-26
    • 2017-05-05
    • 2021-08-24
    • 2018-01-05
    • 1970-01-01
    相关资源
    最近更新 更多