将jaeger与kubernetes集群上的弹性搜索后端存储连接起来



我在谷歌云平台上有一个kubernetes集群,在它上,我通过jaeger-kubernete模板的开发设置进行了jaeger部署因为我的目的是设置类似elasticsearch的后端存储,因此,我遵循jaeger kubernetes github文档中的操作

  • 我已经通过生产设置选项创建了服务

这里配置了访问elasticsearch服务器的URL、用户名和密码以及端口

kubectl create -f https://raw.githubusercontent.com/jaegertracing/jaeger-kubernetes/master/production-elasticsearch/configmap.yml

在这里,配置了弹性搜索服务的docker映像的下载及其卷安装。

kubectl create -f https://raw.githubusercontent.com/jaegertracing/jaeger-kubernetes/master/production-elasticsearch/elasticsearch.yml

然后,现在我们有一个弹性搜索服务,运行9200和9300端口

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生产模板创建了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体系结构,jaeger-collectorjaeger-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弹性搜索文件kubectl edit configmap jaeger-configuration命令,以便尝试编辑它与弹性搜索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吗?这些服务将连接到弹性搜索后端服务?

如何在此处设置弹性搜索IP地址或URL?

在jaeger组件中,查询和收集器需要访问存储,但我不知道什么是弹性端点。。。

这个server-urls: http://elasticsearch:9200是一个正确的端点吗?

我是从kubernetes和DevOps世界开始的,如果有人能在概念上帮助我,并为我指明正确的地址,以便将jaeger和elasticsearch设置为后端存储,我将不胜感激。

当您从同一命名空间中的pod访问服务时,您可以只使用服务名称。示例:

http://elasticsearch:9200

如果您从不同命名空间中的pod访问服务,您还应该指定命名空间。示例:

http://elasticsearch.mynamespace:9200
http://elasticsearch.mynamespace.svc.cluster.local:9200

要检查服务所在的命名空间,请使用以下命令:

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)'"}]}]}}}}'

相关内容

  • 没有找到相关文章

最新更新