kubernetes - etcd v3 API 不可用
问题描述
我正在尝试以 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。
解决方案
查了etcd源码,终于找到了这个issue的RC。在 etcd 3.3.0 中,如果 etcd 从 yaml 配置文件加载配置,则配置标志“enable-grpc-gateway”的默认值为 false,但如果 etcd 从命令行加载配置标志,则默认值为 true。所以在你的 etcd 配置文件中添加下面的行可以解决这个问题。
enable-grpc-gateway: true
我尝试了 etcd 3.3.13,它已在此版本中修复。
推荐阅读
- android - 如果不为 null 或为空 Kotlin,则将值作为参数传递
- ruby-on-rails - 如何在 Rails 中转换原始时间字符串?
- python - 用另一个类中的另一个方法调用一个方法(在 Class_B 中调用 Method_B,在 Class_A 中调用 Method_A)
- html - 输入字段在布局中重叠
- c - 在 Visual Studio 2019 中调试嵌套循环
- sap - 如何在 sap Spartacus 中为模板内的插槽提供样式
- django - AWS EC2 django 文件创建权限错误
- android - FormsAppCompatActivity 与 MainActivity
- javascript - 在两列上过滤/搜索表并隐藏行
- wikipedia - 从 Wikipedia 转储中提取特定文章及其讨论页