Ejemplo de implementación del operador jaeger en un entorno de producción

fondo

El paquete de instalación de istio viene con el método de implementación jaeger, pero el método de implementación que proporciona es todo en uno, es decir, el almacenamiento de datos está en la memoria, lo cual no es adecuado para el entorno de producción, por lo que debemos seguir las siguientes instrucciones: oficial Implementar en el método de implementación del entorno de producción, esto también se explica en la documentación oficial de istio.

Insertar descripción de la imagen aquí
En Kubernetes, la recomendación oficial es utilizar el método del operador para la implementación. El método de implementación no es difícil. Solo consulte la documentación oficial. Sin embargo, hay algunas cosas a las que se debe prestar atención al conectarse a istio. Mi proceso de instalación a continuación.

Este artículo solo registra cómo implementar Jaeger en un entorno de producción. Con respecto a la aplicación en profundidad de Jaeger, no la presentaré aquí. Los estudiantes que lo necesiten pueden consultar la documentación oficial por sí mismos.

Documentación de referencia: operador jaeger

desplegar

Implementar el operador jaeger

  1. Según la documentación oficial, ¡instale cert-manager primero
    ! [Inserte descripción de la imagen aquí](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. Implementar el operador jaeger

    Según el documento oficial, continúe con la operación.
    Insertar descripción de la imagen aquí
    Debido a que 1.46.0 aún no se ha lanzado en github, la ejecución del comando según el documento oficial fallará, por lo que podemos conformarnos con la siguiente mejor opción e instalar 1.45.0.
    Insertar descripción de la imagen aquí


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

Tenga en cuenta que aquí puede ocurrir una falla en el inicio del pod. Cuando haga esto kubectl describe pod -n observability jaeger-operator-58d97648c5-****, encontrará que gcr.io/kubebuilder/kube-rbac-proxy:v0.13.0 no se pudo descargar. Aquellos que juegan a K8S con frecuencia deben saber que la biblioteca de Google está bloqueada. ., necesita encontrar una manera de obtener esta imagen usted mismo, puede extraerla de la dirección de la imagen nacional y volver a etiquetarla, o descargarla en un entorno de escalera y exportar e importar la imagen ... En resumen, hay muchas maneras.

Implementar jaeger

Debido a que en este paso todos enfrentan entornos diferentes, debe personalizar la configuración de acuerdo con su entorno real. Se recomienda leer el documento varias veces.

Estas son mis necesidades: El almacenamiento que uso es un ES externo. Al mismo tiempo, me refiero a la configuración oficial y uso el método de configuración de rollover de Elasticsearch . Luego, el ES externo tiene una cuenta y una contraseña, por lo que puedo usar Secrets Support para configure la cuenta y la contraseña. Los detalles de los secretos son Para los métodos de configuración, consulte la cuarta descripción de Elasticsearch externokubectl create secret generic jaeger-secret --from-literal=ES_PASSWORD=changeme --from-literal=ES_USERNAME=elastic
Insertar descripción de la imagen aquí
. Mi configuración se publica a continuación.

#创建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 de acoplamiento

Hasta ahora, se ha completado la implementación básica. Ya puede usar la interfaz de usuario WEB proporcionada por jaeger-query, pero no hay información de seguimiento relacionada con istio en este momento. Lo mencionamos antes cuando miramos el documento oficial de istio. La dirección de jaeger-collector debe definirse en la configuración de istio. El método oficial es definir los parámetros al instalar (actualizar) istio. De hecho, existe otro método:

$ 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 tiene un cm y su nombre es istio. Solo necesitamos agregarlo o modificarlo en istio
Insertar descripción de la imagen aquí
. No significa que se pueda usar normalmente. En este momento, debe reiniciar istiod y luego encontrará que el Servicio que implementó anteriormente La información de seguimiento aún no se puede ver a través de Jaeger. En este momento, debe reiniciar el servicio inyectado por istio y luego podrá ver la información de seguimiento.
Insertar descripción de la imagen aquí

atraquekiali

Los estudiantes que han usado kiali saben que los rastros se pueden ver en varios menús de kiali y la fuente de datos es jaeger. Si usamos el jaeger que viene con istio, podemos verlo directamente sin ninguna configuración. Pero ahora implementamos jaejer nosotros mismos
Insertar descripción de la imagen aquí. , que es ligeramente diferente del método de instalación que viene con istio, por lo que necesitamos configurarlo. El método específico también es muy simple, que consiste en modificar el mapa de configuración de kiali

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

Luego busque external_servicesy agregue el siguiente contenido a continuación.

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

Insertar descripción de la imagen aquí
La URL es equivalente a la dirección de su acceso externo a la UI web de Jaeger. Su función es permitirle acceder directamente a Jaeger en kiali. in_cluster_url es mostrar rastros en kiali.
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/Mrheiiow/article/details/131109127
Recomendado
Clasificación