我在Google Cloud Platform上有一个kubernetes集群,在上面,我通过jaeger-kubernetes templates的开发设置进行了Jaeger部署
因为我的目的是像后端存储一样设置elasticsearch,因此,我遵循jaeger-kubernetes github文档进行以下操作

  • 我已经通过production setup选项
  • 创建了服务

    此处配置了用于访问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 architecturejaeger-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 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/

    10-11 08:36