首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从haproxy的kubernetes-etcd检索端点

从haproxy的kubernetes-etcd检索端点
EN

Stack Overflow用户
提问于 2017-10-11 21:43:27
回答 1查看 793关注 0票数 0

我尝试使用confd从我的kubernetes-etcd-cluster中检索haproxy的kubernetes端点。

当执行confd时,它总是返回一个错误,找不到那个注册表项'/registry‘:

代码语言:javascript
复制
$ ./confd-0.12.0-linux-amd64 -config-file confd.toml
...
INFO Backend nodes set to https://10.31.9.49:2379
DEBUG Loading template resources from confdir /root/haproxy/kubernetes-endpoint-proxy/src/etc/confd/
DEBUG Found template: /root/haproxy/kubernetes-endpoint-proxy/src/etc/confd/conf.d/haproxy.toml
DEBUG Loading template resource from /root/haproxy/kubernetes-endpoint-proxy/src/etc/confd/conf.d/haproxy.toml
DEBUG Retrieving keys from store
DEBUG Key prefix set to /
ERROR 100: Key not found (/registry) [2540]

但是,使用etcdctl在/下方的'/registry‘中列出可以很好地工作。

代码语言:javascript
复制
$ etcdctl \
--cacert=/etc/kubernetes/ssl/ca.pem \
--cert=./admin1.pem \
--key=./admin1-key.pem \
--endpoints 10.31.9.49:2379 \
get / --keys-only=true --prefix \
| grep endpoints
/registry/services/endpoints/default/echoheaders-x
/registry/services/endpoints/default/echoheaders-y
/registry/services/endpoints/default/kubernetes
/registry/services/endpoints/kube-system/default-http-backend
/registry/services/endpoints/kube-system/kube-controller-manager
/registry/services/endpoints/kube-system/kube-dns
/registry/services/endpoints/kube-system/kube-scheduler
/registry/services/endpoints/kube-system/kubernetes-dashboard

单个端点也可以工作:

代码语言:javascript
复制
etcdctl \
--cacert=/etc/kubernetes/ssl/ca.pem \
--cert=./admin1.pem \
--key=./admin1-key.pem \
--endpoints 10.31.9.49:2379 get /registry/services/endpoints/default/echoheaders-x
/registry/services/endpoints/default/echoheaders-x
k8s

v1  Endpoints�
�
echoheaders-xdefault"2/api/v1/namespaces/default/endpoints/echoheaders-x*$3bc4430d-ad97-11e7-8fe1-0022195f6b5b28B
                                                                                                                ������uZ
run
   echoheadersz�
z

10.244.1.66_
Poddefaultechoheaders-1076692255-rs1qm"$360a3956-ad97-11e7-8fe1-0022195f6b5b*22306754:worker05

�?TCP"

但是,使用curl列出与上面相同的端点失败:

代码语言:javascript
复制
curl \
--cacert /etc/kubernetes/ssl/ca.pem \
--cert ./master01.pem \
--key ./master01-key.pem  \
-L 'https://10.31.9.49:2379/v2/keys/registry/services/endpoints/default/echoheaders-x'
{"errorCode":100,"message":"Key not found","cause":"/registry","index":2540}

当etcdctl工作时,为什么我不能用curl列出任何东西?

有没有人能解释一下这个问题?

EN

回答 1

Stack Overflow用户

发布于 2017-10-12 01:40:37

答案是etcd3使用gRPC并通过API-version3提供访问。Confd和curl使用API-version2访问数据。

需要gRPC <-> Json-网关:https://github.com/coreos/etcd/blob/master/Documentation/dev-guide/api_grpc_gateway.md

答案来自https://github.com/coreos/etcd/issues/8682

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46689817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档