我在Google Cloud Platform上有一个kubernetes集群,在上面,我通过jaeger-kubernetes templates的开发设置进行了Jaeger部署
因为我的目的是像后端存储一样设置elasticsearch
,因此,我遵循jaeger-kubernetes github文档进行以下操作
此处配置了用于访问
elasticsearch
服务器的URL以及用户名,密码和端口kubectl create -f https://raw.githubusercontent.com/jaegertracing/jaeger-kubernetes/master/production-elasticsearch/configmap.yml
并在此处配置了elasticsearch服务的docker镜像及其卷安装的下载。
kubectl create -f https://raw.githubusercontent.com/jaegertracing/jaeger-kubernetes/master/production-elasticsearch/elasticsearch.yml
然后,此刻,我们有了在9200和9300端口上运行的Elasticsearch服务
kubectl get service elasticsearch [a89fbe2]
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch ClusterIP None <none> 9200/TCP,9300/TCP 1h
kubernetes-jaeger
production templates创建jaeger组件:λ bgarcial [~] → kubectl create -f https://raw.githubusercontent.com/jaegertracing/jaeger-kubernetes/master/jaeger-production-template.yml
deployment.extensions/jaeger-collector created
service/jaeger-collector created
service/zipkin created
deployment.extensions/jaeger-query created
service/jaeger-query created
daemonset.extensions/jaeger-agent created
λ bgarcial [~/workspace/jaeger-elastic] at master ?
根据Jaeger architecture,
jaeger-collector
和jaeger-query
服务需要访问后端存储。因此,这些是我在kubernetes集群上运行的服务:
λ bgarcial [~/workspace/jaeger-elastic] at master ?
→ kubectl get services [baefdf9]
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch ClusterIP None <none> 9200/TCP,9300/TCP 3h
jaeger-collector ClusterIP 10.55.253.240 <none> 14267/TCP,14268/TCP,9411/TCP 3h
jaeger-query LoadBalancer 10.55.248.243 35.228.179.167 80:30398/TCP 3h
kubernetes ClusterIP 10.55.240.1 <none> 443/TCP 3h
zipkin ClusterIP 10.55.240.60 <none> 9411/TCP 3h
λ bgarcial [~/workspace/jaeger-elastic] at master ?
configmap.yml
flex 搜索文件kubectl edit configmap jaeger-configuration
命令,以尝试相对于elasticsearch URL端点对其进行编辑(可能是?...此刻,我猜这是下一步...)我执行它:
λ bgarcial [~] → kubectl edit configmap jaeger-configuration
我得到以下编辑条目:
apiVersion: v1
data:
agent: |
collector:
host-port: "jaeger-collector:14267"
collector: |
es:
server-urls: http://elasticsearch:9200
username: elastic
password: changeme
collector:
zipkin:
http-port: 9411
query: |
es:
server-urls: http://elasticsearch:9200
username: elastic
password: changeme
span-storage-type: elasticsearch
kind: ConfigMap
metadata:
creationTimestamp: "2018-12-27T13:24:11Z"
labels:
app: jaeger
jaeger-infra: configuration
name: jaeger-configuration
namespace: default
resourceVersion: "1387"
selfLink: /api/v1/namespaces/default/configmaps/jaeger-configuration
uid: b28eb5f4-09da-11e9-9f1e-42010aa60002
在这里...我是否需要设置我们自己的URL来收集和查询服务,这些服务将与elasticsearch后端服务连接?
如何在此处设置elasticsearch IP地址或URL?
在jaeger组件中,查询和收集器需要访问存储,但是我不知道 flex 端点是什么...
这
server-urls: http://elasticsearch:9200
是正确的端点吗?我从kubernetes和DevOps Realm 开始,如果有人可以在概念上为我提供帮助,并指出正确的地址,以便将jaeger和elasticsearch设置为后端存储,我将不胜感激。
最佳答案
当您从相同命名空间中的pod访问服务时,您可以仅使用服务名称。
例:
http://elasticsearch:9200
如果要从不同 namespace 中的pod访问服务,则还应指定 namespace 。
例:
http://elasticsearch.mynamespace:9200
http://elasticsearch.mynamespace.svc.cluster.local:9200
要检查服务所在的 namespace ,请使用以下命令:
kubectl get svc --all-namespaces -o wide
注意:更改ConfigMap不会立即将其应用于部署。通常,您需要重新启动部署中的所有Pod以应用新的ConfigMap值。目前尚无滚动重启功能,但是您可以使用以下命令作为解决方法:
(将部署名称和pod名称替换为真实名称)
kubectl patch deployment mydeployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"my-pod-name","env":[{"name":"START_TIME","value":"'$(date +%s)'"}]}]}}}}'
关于elasticsearch - 将jaeger与Kubernetes集群上的Elasticsearch后端存储连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53914858/