生产环境的jaeger-operator部署示例

背景

istio的安装包里是带有jaeger部署方式的,但是他提供的部署方式是all-in-one,即数据存储是内存,这对于生产环境来说是不合适的,因此,我们需要根据官方的生产环境的部署方式进行部署,这个在istio的官方文档里也有说明

在这里插入图片描述
而在kubernetes中,官方是推荐使用operator的方式进行部署,部署的方式不难,参照官方文档进行即可,但是在对接istio时,有一些需要注意的地方,下面记录下我的安装过程。

本文只是记录在生产环境中如何部署jaeger,关于jaeger的深层次应用,不在此进行介绍,有需求的同学可以自行参阅官方文档

参考文档:jaeger-operator

部署

部署jaeger-operator

  1. 根据官方文档,先安装cert-manager
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/e96a63cd30924082a35cf0e6571af723.png

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.6.3/cert-manager.yaml

  1. 部署jaeger-operator

    根据官方文档,继续操作
    在这里插入图片描述
    因为1.46.0在github上还没打出版本来,所以按照官方文档的命令执行是失败的,因此我们可以退而求其次,安装1.45.0
    在这里插入图片描述


kubectl create ns observability
kubectl create -f https://github.com/jaegertracing/jaeger-operator/releases/download/v1.45.0/jaeger-operator.yaml -n observability 
kubectl get deployment jaeger-operator -n observability

NAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
jaeger-operator   1         1         1            1           48s

注意,这里可能会发生pod启动失败,当你kubectl describe pod -n observability jaeger-operator-58d97648c5-****,你会发现gcr.io/kubebuilder/kube-rbac-proxy:v0.13.0下载失败,经常玩K8S的应该就知道了,google库是被墙了的,需要你自己想办法搞定这个镜像,你可以通过国内的镜像地址拉取后重新tag,或者在梯子环境下下载后,导出导入镜像…总之办法很多。

部署jaeger

这一步因为每个人面对的环境是不同的,所以需要根据自己的实际环境进行定制化的配置,建议多看几遍文档

这里说下我的需求:我使用的存储是外部的ES,同时参照官方的配置,使用Elasticsearch rollover的配置方式,然后外部ES是有账号密码的,所以可以使用Secrets Support配置账号密码,secrets的具体配置方式可以参见External Elasticsearch的第四条说明kubectl create secret generic jaeger-secret --from-literal=ES_PASSWORD=changeme --from-literal=ES_USERNAME=elastic
在这里插入图片描述
下面贴出我的配置

#创建elasticsearch的用户密码secrets
$ kubectl create secret generic jaeger-secret --from-literal=ES_PASSWORD=changeme --from-literal=ES_USERNAME=elastic
$ kubectl get secrets -n observability 
NAME                           TYPE                                  DATA   AGE
default-token-fc756            kubernetes.io/service-account-token   3      23h
jaeger-operator-service-cert   kubernetes.io/tls                     3      23h
jaeger-operator-token-dmrzc    kubernetes.io/service-account-token   3      20h
jaeger-secret                  Opaque                                2      22h
jaeger-token-n5xfx             kubernetes.io/service-account-token   3      20h

##jaeger部署文件
$ cat jaeger.yaml 
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: jaeger
  namespace: observability
spec:
  strategy: production
  collector:
    maxReplicas: 2
    resources:
      limits:
        cpu: 100m
        memory: 128Mi
  storage:
    type: elasticsearch
    options:
      es:
        server-urls: http://192.168.8.105:9200
        use-aliases: true
    esRollover:
      conditions: "{
    
    \"max_age\": \"2d\"}"
      readTTL: 168h
      schedule: "55 23 * * *"
    secretName: jaeger-secret
  query:
    serviceType: NodePort
$ kubectl apply -f jaeger.yaml
$ kubectl get svc,pod -n observability 
NAME                                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                    AGE
service/jaeger-collector                  ClusterIP   10.233.19.93    <none>        9411/TCP,14250/TCP,14267/TCP,14268/TCP,4317/TCP,4318/TCP   20h
service/jaeger-collector-headless         ClusterIP   None            <none>        9411/TCP,14250/TCP,14267/TCP,14268/TCP,4317/TCP,4318/TCP   20h
service/jaeger-operator-metrics           ClusterIP   10.233.29.204   <none>        8443/TCP                                                   20h
service/jaeger-operator-webhook-service   ClusterIP   10.233.28.228   <none>        443/TCP                                                    20h
service/jaeger-query                      NodePort    10.233.23.105   <none>        16686:32003/TCP,16685:32004/TCP                            20h

NAME                                           READY   STATUS      RESTARTS   AGE
pod/jaeger-collector-c498bfb45-khtrq           1/1     Running     0          20h
pod/jaeger-es-index-cleaner-28102555-t4v77     0/1     Completed   0          14h
pod/jaeger-es-lookback-28102555-d98x8          0/1     Completed   0          14h
pod/jaeger-es-rollover-28102555-2rxlw          0/1     Completed   0          14h
pod/jaeger-es-rollover-create-mapping-k4x5r    0/1     Completed   0          20h
pod/jaeger-operator-58d97648c5-gr2kx           2/2     Running     0          20h
pod/jaeger-query-79754974c7-7gnk9              2/2     Running     0          20h
pod/jaeger-spark-dependencies-28102555-dbnxt   0/1     Completed   0          14h

对接istio

到此为止,基本的部署已经完成了,你已经可以使用jaeger-query提供的WEB-UI,但是此时却并没有istio相关的tracing信息,之前我们看istio官方文档的时候,已经提过了,需要在istio的配置中定义jaeger-collector的地址,官方给出的方式是在安装(更新)istio的时候定义参数,其实还有一个方法:

$ kubectl get cm -n istio-system 
NAME                                  DATA   AGE
grafana                               4      63d
istio                                 2      63d
istio-ca-root-cert                    1      63d
istio-gateway-deployment-leader       0      63d
istio-gateway-status-leader           0      63d
istio-grafana-dashboards              2      63d
istio-leader                          0      63d
istio-namespace-controller-election   0      63d
istio-services-grafana-dashboards     4      63d
istio-sidecar-injector                2      63d
kiali                                 1      63d
kube-root-ca.crt                      1      63d
prometheus                            5      63d

istiod有一个cm,名字就叫istio,我们只需要在istio中添加或者修改即可
在这里插入图片描述
修改完了,并不代表已经能正常使用了,此时你需要重启istiod,然后你会发现,你先前部署的服务的tracing信息还是无法通过jaeger看到,此时你就需要重启被istio注入的服务,然后你就能看到tracing信息了
在这里插入图片描述

对接kiali

用过kiali的同学都知道,kiali的好几个菜单都能查看traces,而数据来源就是jaeger,如果我们使用istio自带的jaeger,那么不用任何配置,直接就能看
在这里插入图片描述但现在我们是自己部署的jaejer,就跟istio自带的安装方式有一定的差异,所以我们需要配置一下,具体的方式也很简单,就是修改kiali的configmap

$ kubectl get cm -n istio-system kiali 
NAME    DATA   AGE
kiali   1      63d

然后找到external_services,在下面添加如下内容

  tracing:
    url: http://192.168.8.104:32003
    in_cluster_url: http://jaeger-query.observability:16685/jaeger

在这里插入图片描述
url就相当于你外部访问jaeger的webUI的地址,其作用就是可以让你在kiali直达jaeger,in_cluster_url就是在kiali展示traces
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Mrheiiow/article/details/131109127